Понимание метода $.validator.unobtrusive.adapters.addBool ()

Я пытаюсь кое-что понять.

Из этого сообщения в блогеhttp://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

Bridging HTML and jQuery Validate: Adapters

Writing a client-side validator involves two steps: writing the validator for jQuery Validate, and writing the adapter which takes the parameter values from the HTML attributes and turns it into jQuery Validate metadata. The former topic is not in the scope of this blog post (since it’s really not MVC specific).

There is an adapter collection available at jQuery.validator.unobtrusive.adapters. Hanging off the adapter collection is the adapter registration method (add) and three helpers that can be used to register very common types of adapters (addBool, addSingleVal, and addMinMax).

Обратите внимание, что там написано два шага.

Но если вы посмотрите на этот пост MVC3 :сделать флажок обязательным через проверку jQuery? вам нужен только второй шаг ("запись адаптера" )для работы проверки -путем добавления этой строки кода:

$.validator.unobtrusive.adapters.addBool("mandatory", "required");

Я протестировал код в новом интернет-приложении MVC 4, и он отлично работает, вот очень простой пример.

Посмотреть модель

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 GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationType = "mandatory";
        yield return rule;
    }
}

Посмотреть

@model MvcApplication2.Models.SimpleViewModel

@{
    ViewBag.Title = "";
}    

@using (Html.BeginForm()) {
    @Html.ValidationSummary()
    @Html.CheckBoxFor(model => model.IsTermsAccepted)
    @Html.ValidationMessageFor(model => model.IsTermsAccepted)
    
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    
}

В общем, у меня три вопроса:

  1. $.validator.unobtrusive.adapters.addBool ("обязательный", "требуемый" ); действительно единственное, что вам нужно, кроме написания класса атрибута?

  2. что именно он делает за кулисами?

  3. где я могу найти хорошую документацию по addBool?

15
задан Community 23 May 2017 в 12:33
поделиться