のために逆に動作します。しかしそれは逆に働く。それは私が逆ではなくチェックボックスをチェックするとエラーメッセージを表示しています。私はどこが間違っているのか分かりません。必要なチェックボックスの検証は私がページを送信する前に私は、チェックボックスの検証を持ってHtml.CheckBoxFor
私のViewModel
[Display(Name = "Terms and Conditions")]
[Range(typeof(bool), "true", "true", ErrorMessage = "Please accept Terms & Conditions")]
public bool IsTermsAccepted { get; set; }
マイビュー
<div class="row col-lg-offset-2 top-buffer">
@Html.CheckBoxFor(model => model.IsTermsAccepted)
@Html.LabelFor(model => model.IsTermsAccepted)
<br>@Html.ValidationMessageFor(model => model.IsTermsAccepted)
</div>
お時間をいただき、ありがとうございます!
EDIT1:私は正確にhere
EDIT2のように続く:私はあなたが必要とする(上記のリンクに示すように)簡単なスクリプトを追加することによってこの問題を解決することができた
<script>
// extend range validator method to treat checkboxes differently
var defaultRangeValidator = $.validator.methods.range;
$.validator.methods.range = function(value, element, param) {
if(element.type === 'checkbox') {
// if it's a checkbox return true if it is checked
return element.checked;
} else {
// otherwise run the default validation function
return defaultRangeValidator.call(this, value, element, param);
}
}
良い説明が、それはRequiredAttribute' 'から派生してはならないことに注意してください - ちょうどValidationAttribute''から(そのaが 'bool'以来、とにかく、デフォルトで必要と何がある場合は、検証エラーが既に追加されません応答の値)。さらに、 'RequiredAttribute'から派生した場合、' global.asax'にも登録する必要があります(dazbradburyの回答は正しいアプローチであり、クライアント側の検証も行います) –