Próbuję coś zrozumieć.
Od tego blogpost http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
Bridging HTML i jQuery sprawdzania poprawności: Adaptery
Pisanie Walidator po stronie klienta składa się z dwóch etapów: piszących walidator dla jQuery Weryfikuj i pisanie adapter, który trwa wartości parametrów z atrybutów HTML i zamienia je na jQuery Sprawdź poprawność metadanych. Poprzedni temat nie jest w zakresie tego bloga post (ponieważ tak naprawdę nie jest to specyficzne dla MVC).
Dostępna jest kolekcja adapterów pod adresem jQuery.validator.unobtrusive.adapters. Zawieszanie kolekcji adaptera to metoda rejestracji adaptera (dodaj) i trzech pomocników , które mogą być używane do rejestrowania bardzo popularnych typów adapterów (addBool, addSingleVal i addMinMax).
Zauważ, że podano dwa kroki.
Ale jeśli spojrzeć na to stanowisko MVC3: make checkbox required via jQuery validate? trzeba tylko drugi etap („pisanie adapter”) do zatwierdzenia do pracy - przez dodanie tego wiersza kodu:
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
I przetestowane kod w nowej aplikacji internetowej MVC 4 i działa dobrze, oto przykład superprostości.
Widok Model
public class SimpleViewModel
{
[Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
[Display(Name = "Terms Accepted")]
public bool IsTermsAccepted { get; set; }
}
Validation Atrybut
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;
}
}
Zobacz
@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>
}
Więc w zasadzie mam trzy pytania:
jest $ .validator.unobtrusive.adapters.addBool ("obowiązkowy", "wymagany"); naprawdę jedyne czego potrzebujesz oprócz pisania klasy atrybutów?
co dokładnie robi za kulisami?
gdzie mogę znaleźć dobrą dokumentację na temat addBool?
1: Tylko dla "już istniejących" adapterów. 2: Nie jestem pewien, mając nadzieję, że sam się o tym dowiem. 3: Jeśli znajdziesz, daj mi znać! – BlueChippy
http://thewayofcode.wordpress.com/2012/01/18/custom-unobtrusive-jquery-validation-with-data-annotations-in-mvc-3/ – BlueChippy