您可以編寫一個已經提到的自定義驗證屬性。如果您正在進行客戶端驗證,您需要編寫自定義JavaScript以使不顯眼的驗證功能可以提取它。例如如果你正在使用jQuery:
// extend jquery unobtrusive validation
(function ($) {
// add the validator for the boolean attribute
$.validator.addMethod(
"booleanrequired",
function (value, element, params) {
// value: the value entered into the input
// element: the element being validated
// params: the parameters specified in the unobtrusive adapter
// do your validation here an return true or false
});
// you then need to hook the custom validation attribute into the MS unobtrusive validators
$.validator.unobtrusive.adapters.add(
"booleanrequired", // adapter name
["booleanrequired"], // the names for the properties on the object that will be passed to the validator method
function(options) {
// set the properties for the validator method
options.rules["booleanRequired"] = options.params;
// set the message to output if validation fails
options.messages["booleanRequired] = options.message;
});
} (jQuery));
另一種方式(這是一個黑客位的,我不喜歡它)就是對模型中的一個屬性,它始終設置爲true,則使用CompareAttribute比較您的* AgreeTerms *屬性的值。簡單的是,但我不喜歡它:)
自定義註釋很容易寫,你有沒有考慮過這個選項? – asawyer
不適用於布爾型,但非常相似(並允許自定義錯誤消息):http://rical.blogspot.com/2012/03/server-side-custom-annotation.html – pkr298