标签: unobtrusive-validation

MVC 3指定远程验证的验证触发器

我已经使用MVC 3不引人注意的验证实现了远程验证,如下所示

该模型

public class MyViewModel {
    [Remote("ValidateAction", "Validation")]
    public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器

public partial class ValidationController : Controller
{
    public virtual JsonResult ValidationAction(string aTextToValidate)
    {
        if(aTextToValidate == /* some condition */)
            return Json(true, JsonRequestBehavior.AllowGet);
        return Json("This is not valid, Try Again !", JsonRequestBehavior.AllowGet);
    }
}
Run Code Online (Sandbox Code Playgroud)

风景

@using (Html.BeginForm() {
    @Html.TextBoxFor(m => m.Text)
    @Html.ValidationMessageFor(m => m.Text)
}
Run Code Online (Sandbox Code Playgroud)

就是这样,一切正常,但ValidationAction会在每次按键时触发,这是不理想的,我想只是在元素失去焦点时触发,但无法想象如何做到这一点

UPDATE

实际上我已经注意到,默认情况下,验证会触发一次.lur第一次元素失去焦点,但是当尝试纠正它时,验证然后触发onKeyUp.我认为这是预期的功能,并且考虑它可能非常有用.但是,知道是否可以修改此行为会很有用

validation unobtrusive-validation asp.net-mvc-3

5
推荐指数
2
解决办法
6835
查看次数

在Ajax请求后手动绑定JQuery验证

我请求ASP.net MVC视图到现场框和视图中包含已标记了属性的表单字段由JQuery的不显眼的验证插件使用.

客户端脚本不工作然而,我的理论是,因为它的验证框架只被上早已由MVC视图已经被加载到现场箱的时间通过网页加载触发.

那么我怎样才能让验证框架知道它有新的表单字段来修复?

干杯,伊恩.

jquery-validate unobtrusive-validation asp.net-mvc-3

5
推荐指数
2
解决办法
7236
查看次数

克隆通过jQuery在MVC 3中输入和验证

我使用MVC3模型Validation和Unobtrusive进行显示验证,并尝试找到克隆元素和验证的方法.

这是我的查看代码:

<div id="d1" class="Addable">
@Html.EditorFor(model => model.CellPhone)
@Html.ValidationMessageFor(model => model.CellPhone)
</div>
<input type"button" class="AddE" />
Run Code Online (Sandbox Code Playgroud)

而HTML Dom则是:

<div class="Addable" id="d1">
  <input type="text" value="" name="CellPhone" id="CellPhone" data-val-required="Req."
   data-val-regex-pattern="^04[1234][0-9]{6}$" data-val-regex="notValid" data-val="true"
   class="text-box single-line valid">

 <span data-valmsg-replace="true" data-valmsg-for="CellPhone" 
  class="invalid-side-note field-validation-valid"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我使用以下脚本来克隆具有更改名称的新脚本,例如数组名​​称:

//Add new Addable div
$('.AddNewE').click(function () {

    var Target = $('.Addable:first');
    var TargetId = $(Target).attr('id');
    var Count = $('.Addable#' + TargetId).size();
    var CloneTarget = $(Target).clone();
    CloneTarget.find('input').val('');
    CloneTarget.insertAfter('.Addable:last');
    var TargetName = $(Target).find('input').attr('name');

    if (Count == 1) {

        var CloneName = TargetName …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc jquery unobtrusive-validation asp.net-mvc-3

5
推荐指数
1
解决办法
2239
查看次数

ASP.NET MVC Unobtrusive客户端验证不起作用

在我的ASP.NET MVC 4应用程序中,我试图使用Fluent Validation进行不显眼的客户端验证.

<script src="/Scripts/jquery.validate.min.js" type="text/javascript">
</script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript">
</script>
Run Code Online (Sandbox Code Playgroud)

我在创建新的ASP.NET MVC 4应用程序时提供了VS2010提供的这两个.js文件.我还在我的web.config文件上启用了客户端验证.

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

据我所知,当启用客户端验证和不引人注目的JavaScript时,带有客户端验证规则的输入字段包含data-val ="true"属性,以触发不显眼的客户端验证.我在输入字段中有这些字段.

例如,

<input class="input-validation-error" data-val="true" data-val- 
required="error text here" id="purchasePrice" 
name="PurchasePrice" type="text" value="">

<span class="field-validation-error error" data-valmsg-for="PurchasePrice" 
data-valmsg-replace="true">'Purchase Price' must not be empty.</span>
Run Code Online (Sandbox Code Playgroud)

但是,当我提交表单时,它会发布到控制器,我的模型会在我的控制器代码而不是客户端上进行检查.

编辑:

这是我的表格开头标签.

@using (Html.BeginForm("Create", "Product", FormMethod.Post, 
   new { enctype = "multipart/form-data", @class = "mainForm",
         @id = "productCreateForm" }))
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

asp.net-mvc fluentvalidation unobtrusive-validation

5
推荐指数
1
解决办法
6485
查看次数

使用bootstrap,Asp.net Mvc 3和骨干进行消防jquery不显眼的验证

我试图找到网上可用的信息,但无法将它连接在一起.我有一个使用登录页面的应用程序.现在我没有将视图绑定到任何模型.但是我有两个输入(用户名和密码).我想解雇Asp.net Mvc附带的jquery不显眼的验证功能.以下是样本:

带有Twitter引导程序的骨干模板,它是登录模板(下划线模板引擎).

@using (@Html.BeginForm("Login", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
               {
               <div class="modal-body">
                   <div class="control-group">
                        <label class="control-label" for="inputEmail">Email</label>
                        <div class="controls">
                            @*<input type="text" id="inputEmail" placeholder="Email">*@
                            @Html.TextBox("Email", "", new { @placeholder = "Email" })
                        </div>
                    </div>
                    <div class="control-group">
                        <label class="control-label" for="inputPassword">Password</label>
                        <div class="controls">
                            <input type="password" id="inputPassword" placeholder="Password">
                        </div>
                    </div>
                    <div class="control-group">
                    @*<div class="controls">
                        <label class="checkbox">
                            <input type="checkbox"> Remember me
                        </label>
                        <button type="submit" class="btn">Sign in</button>
                    </div>*@
                </div>
             </div>
               <div class="modal-footer">
                    @*<a class="btn" href="#" id="closeBtn">Close</a>*@ <button type="submit" class="btn btn-primary" >Login</button>
               </div> …
Run Code Online (Sandbox Code Playgroud)

jquery-validate unobtrusive-validation backbone.js asp.net-mvc-3 twitter-bootstrap

5
推荐指数
1
解决办法
6702
查看次数

MVC3 .valid()始终为true

我对元素上的JQuery .valid()方法调用有一些问题.我有以下代码.有人用ASP.net MVC和不引人注目的javascript管理这个吗?

Javascript代码

$(function() {
    $('#anchor').click(function () {
        if ($('#myform').valid()) {
            alert("it's valid");     
        } 
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML视图输出

<div class="editor-label">
    <label for="FirstName">First name</label>
</div>
<div class="editor-field">
    <input data-val="true" data-val-required="The First name field is required." id="FirstName" name="FirstName" type="text" value="" />
    <span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样但看不出任何问题.当提交按钮被命中时,表单本身正确验证.

asp.net-mvc jquery jquery-validate unobtrusive-validation

5
推荐指数
1
解决办法
1748
查看次数

在表单MVC上禁用非侵入式验证

我在页面中有两种形式。我希望第一种形式使用非干扰式验证(因为它是由MVC自动生成的),但是我手动编写的第二种形式则不要使用非干扰式验证。

这是一些代码:

@using (Html.BeginForm("Add", "Contacts", FormMethod.Post, new { id = "AddForm" }))
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Datos Contacto</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.ContactDepartmentID)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.ContactDepartmentID, (List<SelectListItem>)ViewBag.ContactDepartments)
            @Html.ValidationMessageFor(model => model.ContactDepartmentID)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Sex)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.Sex, (List<SelectListItem>)ViewBag.Sexs)
            @Html.ValidationMessageFor(model => model.Sex)
        </div>
    </fieldset>
    <br />
    @Html.HiddenFor(model => model.SerializedEmails, new { data_bind = "value: ko.toJSON($root.emails())" })
    @Html.HiddenFor(model => model.SerializedPhones, …
Run Code Online (Sandbox Code Playgroud)

jquery-validate unobtrusive-validation asp.net-mvc-4

5
推荐指数
1
解决办法
7685
查看次数

如何设置$ jQval.unobtrusive.options ErrorPlacement函数correclty

在jquery.validate.unobtrusive中覆盖ErrorPlacement函数的正确方法是什么?

纵观jquery.validate.unobtrusive.js脚本看来,开发商有意将允许您通过设置$ jQval.unobtrusive.options应用自己的ErrorPlacement功能.

在定义errorPlacement函数的validationInfo(form)函数中,我们看到对execInContext("errorPlacement",arguments)的调用.

看来如果我们在$ .validator.unobtrusive.options下创建一个errorPlacement函数,那么就会调用它.

   $.validator.unobtrusive.options = {
        errorPlacement: function () {
            console.log("hello");
        }
    };
Run Code Online (Sandbox Code Playgroud)

问题是必须在jquery.validate.js之后和引用jquery.validate.unobtrusive.js之前配置它.否则$ jQval.unobtrusive.options为null,并且不会再次设置$ form.data(data_validation,result).

    function validationInfo(form) {
    var $form = $(form),
        result = $form.data(data_validation),
        onResetProxy = $.proxy(onReset, form),
        defaultOptions = $jQval.unobtrusive.options || {},
        execInContext = function (name, args) {
            var func = defaultOptions[name];
            func && $.isFunction(func) && func.apply(form, args);
        }

    if (!result) {
        result = {
            options: {  // options structure passed to jQuery Validate's validate() method
                errorClass: defaultOptions.errorClass || "input-validation-error",
                errorElement: defaultOptions.errorElement || "span", …
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-validation

5
推荐指数
1
解决办法
1807
查看次数

在AJAX请求之前单击按钮的客户端验证

我正在使用MVC 4,我希望能够从表中的行集合中验证单行,以确保正确输入字段并通过验证.

属性在模型上正确应用,例如:

[Required]
[MaxLength(50)]
[MinLength(5)]
public string Name {get; set;}
Run Code Online (Sandbox Code Playgroud)

现在,在客户端 - 如何在调用AJAX方法之前启用客户端验证?

为了增加更多的复杂性 - 我有一个按钮,你可以动态地向表中添加一行,填写字段,最后点击更新按钮,它将通过ajax进行POST.但在此帖之前,我想在客户端验证该特定行.

我怎样才能做到这一点?

谢谢

validation asp.net-mvc unobtrusive-validation

5
推荐指数
1
解决办法
3211
查看次数

使用nameof()检查类名及其父级以进行MVC验证

我正在尝试使用nameof向ModelState添加错误:

 @Html.ValidationMessageFor(m => m.Foo.Bar)
Run Code Online (Sandbox Code Playgroud)

在视图中,这已被标记nameFoo.Bar.

当我添加模型状态错误时,我必须将该错误键入a name,所以我使用nameof(Foo.Bar)- 但是这只是Bar在我需要时给了我Foo.Bar.现在我可以硬编码,Foo.Bar但我宁愿使用强类型的方法.我有什么选择?

c# asp.net-mvc unobtrusive-validation

5
推荐指数
1
解决办法
162
查看次数