Pus*_*ots 15 jquery custom-attributes jquery-validate unobtrusive-validation asp.net-mvc-4
我想了解一些事情.
来自这篇博文http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
桥接HTML和jQuery验证:适配器
编写客户端验证器涉及两个步骤:为jQuery Validate编写验证器,并编写从HTML属性获取参数值的适配器并将其转换为jQuery Validate元数据.前一个主题不在本博文的范围内(因为它实际上不是MVC特定的).
jQuery.validator.unobtrusive.adapters上有一个适配器集合.挂起适配器集合的是适配器注册方法(add)和三个帮助程序,可用于注册非常常见的适配器类型(addBool,addSingleVal和addMinMax).
请注意,它说了两个步骤.
但是如果你看看这篇文章MVC3:通过jQuery验证需要make复选框吗?你需要第二步("编写适配器")才能使验证工作 - 通过添加以下代码行:
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
Run Code Online (Sandbox Code Playgroud)
我在一个新的MVC 4 Internet App中测试了代码并且它工作正常,这是超简单的样本.
查看模型
public class SimpleViewModel
{
[Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
[Display(Name = "Terms Accepted")]
public bool IsTermsAccepted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
验证属性
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;
}
}
Run Code Online (Sandbox Code Playgroud)
视图
@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>
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我有三个问题:
是$ .validator.unobtrusive.adapters.addBool("必需","必需"); 除了编写属性类之外,你真的唯一需要的东西吗?
它在幕后究竟做了什么?
哪里可以找到关于addBool的好文档?
除了评论中链接的文章@BlueChippy之外,我在这篇文章中找到了2.的答案。
这只是为 MandatoryAttribute 注册一个新的验证适配器,其中第一个参数是适配器名称,第二个参数是 jQuery 验证规则的名称。适配器名称应与我们之前指定为验证类型的值相匹配,并且 jQuery 验证所需规则将要求用户选中该复选框。
3. 更多信息可以在Brad Wilson 博客上的这篇文章中找到。
| 归档时间: |
|
| 查看次数: |
16884 次 |
| 最近记录: |