私は何かを理解しようとしています。
このブログ投稿からhttp://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
HTML と jQuery Validate の橋渡し: アダプター
クライアント側バリデーターの作成には、jQuery Validate 用のバリデーターの作成と、HTML 属性からパラメーター値を取得してそれを jQuery Validate メタデータに変換するアダプターの作成の 2 つのステップが含まれます。前者のトピックは、このブログ投稿の対象外です (実際には MVC 固有ではないため)。
jQuery.validator.unobtrusive.adapters で利用可能なアダプター コレクションがあります。アダプター コレクションにぶら下がっているのは、アダプター登録メソッド (add) と、非常に一般的なタイプのアダプター (addBool、addSingleVal、および addMinMax) を登録するために使用できる 3 つのヘルパーです。
2 つのステップと表示されていることに注意してください。
しかし、この投稿MVC3: Make Checkbox Required via jQuery validate? を見ると、検証が機能するために必要なのは、次のコード行を追加することにより、2 番目のステップ (「アダプターの作成」) だけです。
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
新しい 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; }
}
検証属性
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;
}
}
意見
@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>
}
だから基本的に私は3つの質問があります:
$.validator.unobtrusive.adapters.addBool("mandatory", "required"); です。属性クラスを書く以外に本当に必要なものは何ですか?
舞台裏で正確に何をしているのですか?
addBool に関する優れたドキュメントはどこにありますか?