Ich versuche etwas zu verstehen.
Von diesem Blogpost http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
Bridging HTML und jQuery Validate: Adapter
eine clientseitige Validator Schreiben besteht aus zwei Schritten: die Validator für jQuery Validate Schreiben und den Adapter zu schreiben, die nimmt Der Parameter Werte von den HTML-Attributen und verwandelt es in jQuery Validieren Metadaten. Das vorherige Thema ist nicht im Rahmen dieses Blogs Post (da es wirklich nicht MVC spezifisch ist).
Es gibt eine Adapter-Sammlung unter jQuery.validator.unobtrusive.adapters. Hängen Sie den Adapter Sammlung ist die Adapter-Registrierungsmethode (hinzufügen) und drei Helfer , die verwendet werden können, um sehr häufige Arten von Adaptern (addBool, addSingleVal und addMinMax) registrieren.
Beachten Sie, dass es zwei Schritte heißt.
Aber wenn man einen Blick auf dieses Thema nehmen MVC3: make checkbox required via jQuery validate? Sie brauchen nur den zweiten Schritt („den Adapter zu schreiben“) für die Validierung zu arbeiten - durch diese Codezeile hinzu:
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
ich erprobt der Code in einer neuen MVC 4 Internet App und es funktioniert gut, hier ist die supersimple Probe.
Ansicht Modell
public class SimpleViewModel
{
[Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
[Display(Name = "Terms Accepted")]
public bool IsTermsAccepted { get; set; }
}
Validierungsattribut
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;
}
}
Ansicht
@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>
}
Also im Grunde habe ich habe drei Fragen:
ist $ .validator.unobtrusive.adapters.addBool ("obligatorisch", "erforderlich"); wirklich das einzige, was Sie neben dem Schreiben einer Attributklasse brauchen?
was genau macht es hinter den Kulissen?
Wo finde ich gute Dokumentation über addBool?
1: Nur für "bereits existierende" Adapter. 2: Nicht sicher, in der Hoffnung, mich selbst zu finden. 3: Wenn Sie einen finden, lassen Sie mich bitte wissen! – BlueChippy
http://thewayofcode.wordpress.com/2012/01/18/custom-unobtrusive-jquery-validation-with-data-annotations-in-mvc-3/ – BlueChippy