首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解$.validator.unobtrusive.adapters.addBool()方法

理解$.validator.unobtrusive.adapters.addBool()方法
EN

Stack Overflow用户
提问于 2012-08-16 00:02:44
回答 1查看 20.2K关注 0票数 17

我在试着理解一些事情。

从这个博客http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

连接HTML和jQuery验证:适配器 编写客户端验证程序需要两个步骤:编写用于jQuery验证的验证器;编写适配器,从jQuery属性获取参数值并将其转化为jQuery验证元数据。前一个主题不在这篇博客文章的范围内(因为它实际上不是MVC特定的)。 在jQuery.validator.unobtrusive.adapters有一个适配器集合可用。挂起适配器集合的是适配器注册方法(add)和三个帮助程序,它们可以用于注册非常常见类型的适配器(addBool、addSingleVal和addMinMax)。

注意,它说有两个步骤。

但是,如果您查看这篇文章MVC3:通过jQuery验证所需的复选框?,您只需要第二步(“编写适配器”)才能使验证工作--添加以下代码:

代码语言:javascript
运行
复制
$.validator.unobtrusive.adapters.addBool("mandatory", "required");

我在一个新的MVC 4 Internet应用程序中测试了代码,它运行得很好,下面是一个超级简单的示例。

视图模型

代码语言:javascript
运行
复制
public class SimpleViewModel
{
    [Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
    [Display(Name = "Terms Accepted")]
    public bool IsTermsAccepted { get; set; }
}

验证属性

代码语言:javascript
运行
复制
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;
    }
}

视图

代码语言:javascript
运行
复制
@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>
}

基本上,我有三个问题:

  1. 除了编写属性类之外,$.validator.unobtrusive.adapters.addBool("mandatory",真的是您唯一需要的东西吗?
  2. 它在幕后到底是做什么的?
  3. 在哪里可以找到关于addBool的好文档?
EN

回答 1

Stack Overflow用户

发布于 2013-01-25 13:29:26

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

  1. 是的,这是除了属性以外唯一需要的东西。这是因为我们使用的规则已经存在(必需)。
  2. 是干什么的呢?

这只是为MandatoryAttribute注册了一个新的验证适配器,其中第一个参数是适配器名,第二个参数是jQuery验证规则的名称。适配器名称应该与我们前面指定的值匹配为验证类型,而jQuery验证所需的规则将要求用户选中复选框。

3.更多信息可以在布拉德·威尔逊博客上的这篇文章中找到。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11978990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档