Tôi đang cố hiểu điều gì đó.
Từ bài đăng trên blog này http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
Bridging HTML và jQuery Validate: Adapters
Viết một validator client-side liên quan đến hai bước sau: văn bản cho validator cho jQuery Validate, và viết adapter mà mất các giá trị tham số từ các thuộc tính HTML và biến nó thành jQuery Xác thực siêu dữ liệu. Chủ đề cũ không nằm trong phạm vi của blog này bài đăng (vì nó thực sự không phải là MVC cụ thể).
Có bộ sưu tập bộ điều hợp có sẵn tại jQuery.validator.unobtrusive.adapters. Treo bộ chuyển đổi bộ sưu tập là phương pháp đăng ký bộ chuyển đổi (thêm) và ba người trợ giúp có thể được sử dụng để đăng ký các loại bộ điều hợp rất phổ biến (addBool, addSingleVal và addMinMax).
Lưu ý rằng nó cho biết hai bước.
Nhưng nếu bạn có một cái nhìn vào bài đăng này MVC3: make checkbox required via jQuery validate? bạn chỉ cần bước thứ hai ("viết adapter") về việc phê chuẩn để làm việc - bằng cách thêm dòng mã này:
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
Tôi đã thử nghiệm ra mã trong một MVC 4 Internet App mới và nó hoạt động tốt, đây là mẫu siêu mẫu.
Xem Mẫu
public class SimpleViewModel
{
[Mandatory(ErrorMessage = "You must agree to the Terms to register.")]
[Display(Name = "Terms Accepted")]
public bool IsTermsAccepted { get; set; }
}
Validation Attribute
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;
}
}
Xem
@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>
}
Vì vậy, về cơ bản tôi đã có ba câu hỏi:
là $ .validator.unobtrusive.adapters.addBool ("bắt buộc", "bắt buộc"); thực sự điều duy nhất bạn cần ngoài việc viết một lớp thuộc tính?
chính xác nó sẽ làm gì sau hậu trường?
nơi tôi có thể tìm thấy tài liệu tốt về addBool?
1: Chỉ dành cho bộ điều hợp "đã tồn tại". 2: Không chắc chắn, hy vọng tìm ra bản thân mình. 3: Nếu bạn tìm thấy một, xin vui lòng cho tôi biết! – BlueChippy
http://thewayofcode.wordpress.com/2012/01/18/custom-unobtrusive-jquery-validation-with-data-annotations-in-mvc-3/ – BlueChippy