Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 了解$.validator.unobtrusive.adapters.addBool()方法_Jquery_Jquery Validate_Asp.net Mvc 4_Custom Attributes_Unobtrusive Validation - Fatal编程技术网

Jquery 了解$.validator.unobtrusive.adapters.addBool()方法

Jquery 了解$.validator.unobtrusive.adapters.addBool()方法,jquery,jquery-validate,asp.net-mvc-4,custom-attributes,unobtrusive-validation,Jquery,Jquery Validate,Asp.net Mvc 4,Custom Attributes,Unobtrusive Validation,我想了解一些事情 从这篇博文 桥接HTML和jQuery验证:适配器 编写客户端验证程序涉及两个步骤:编写 用于jQuery验证的验证器,并编写接受 参数值,并将其转换为jQuery 验证元数据。前一个主题不在本博客的范围内 post(因为它实际上并不特定于MVC) 在上有可用的适配器集合 jQuery.validator.unobtrusive.adapters。挂断适配器 集合是适配器注册方法(add)和三个助手 可用于注册非常常见类型的适配器(addBool, addSingleVal和a

我想了解一些事情

从这篇博文

桥接HTML和jQuery验证:适配器

编写客户端验证程序涉及两个步骤:编写 用于jQuery验证的验证器,并编写接受 参数值,并将其转换为jQuery 验证元数据。前一个主题不在本博客的范围内 post(因为它实际上并不特定于MVC)

在上有可用的适配器集合 jQuery.validator.unobtrusive.adapters。挂断适配器 集合是适配器注册方法(add)和三个助手 可用于注册非常常见类型的适配器(addBool, addSingleVal和addMinMax)

请注意,它显示了两个步骤

但是,如果你看了这篇文章,你只需要第二步(“编写适配器”)就可以进行验证——通过添加以下代码行:

$.validator.unobtrusive.adapters.addBool("mandatory", "required");
我在一个新的MVC4互联网应用程序中测试了这段代码,效果很好,下面是超级简单的示例

视图模型

public class SimpleViewModel
{
    [Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
    [Display(Name = "Terms Accepted")]
    public bool IsTermsAccepted { get; set; }
}
验证属性

public class MandatoryAttribute : ValidationAttribute, IClientValidatable
{
    public override bool IsValid(object value)
    {
        return (!(value is bool) || (bool)value);
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationType = "mandatory";
        yield return rule;
    }
}
公共类MandatoryAttribute:ValidationAttribute,IClientValidatable
{
公共覆盖布尔值有效(对象值)
{
返回(!(值为bool)|(bool)值);
}
公共IEnumerable GetClientValidationRules(ModelMetadata元数据、ControllerContext上下文)
{
ModelClientValidationRule=新的ModelClientValidationRule();
rule.ErrorMessage=FormatErrorMessage(metadata.GetDisplayName());
rule.ValidationType=“必填”;
收益率-收益率规则;
}
}
看法

@model mvcapapplication2.Models.SimpleViewModel
@{
ViewBag.Title=“”;
}    
@使用(Html.BeginForm()){
@Html.ValidationSummary()
@CheckBoxFor(model=>model.IsTermsAccepted)
@Html.ValidationMessageFor(model=>model.IsTermsAccepted)
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
$.validator.unobtrusive.adapters.addBool(“强制”、“必需”);
}
所以基本上我有三个问题:

  • 是$.validator.unobtrusive.adapters.addBool(“强制”、“必需”);除了编写属性类之外,您真的需要做什么

  • 它在幕后到底做了什么

  • 在哪里可以找到关于addBool的好文档


  • 除了评论中链接到的文章@BlueChippy外,我还找到了2的答案。在

  • 是的,除了属性之外,这是唯一需要的东西。这是因为我们使用的规则已经存在(必需)
  • 它有什么作用
  • 这只是为MandatoryAttribute注册一个新的验证适配器, 其中第一个参数是适配器名称和 第二个参数是jQuery验证规则的名称。适配器名称 应与我们之前指定为验证类型的值匹配, jqueryvalidationrequired规则将要求用户进行检查 选中复选框

    三,。更多信息请参见。

    1:仅适用于“已存在”适配器。2:不确定,希望能找到我自己。3:如果你找到了,请告诉我!
    @model MvcApplication2.Models.SimpleViewModel
    
    @{
        ViewBag.Title = "";
    }    
    
    @using (Html.BeginForm()) {
        @Html.ValidationSummary()
        @Html.CheckBoxFor(model => model.IsTermsAccepted)
        @Html.ValidationMessageFor(model => model.IsTermsAccepted)
        <input type="submit" value="Send" />
    }
    
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
        <script type="text/javascript">
            $.validator.unobtrusive.adapters.addBool("mandatory", "required");
        </script>
    }