チェックボックスとして使用する場合のブール値タイプに必須属性
-
18-09-2019 - |
質問
私は、データアノテーションから生成され、私の見解で以下を呼び出すことでクライアント側を有効にしたクライアント側の検証(jQuery/microsoftmvcjqueryvalidation.js)を使用して、単純な追加/編集フォームがある問題に遭遇します。
<% Html.EnableClientValidation(); %>
これはほとんどの要素では正常に機能しているようですが、次のようにチェックボックスとしてレンダリングされるブールプロパティがあるインスタンスがあります。
<%= Html.EditorFor(model => model.Chargeable)%>
これは真/false(チェック/非難)のいずれかです。
ブールは値のタイプであり、nullableではないため、「充電可能なフィールドが必要です」という読み取りフォームを送信すると、必要なプロパティとしてレンダリングされ、エラー(クライアント側)が表示されます。ただし、HTMLが表示されます。生成されたのは2つの部分(チェックボックスと非表示値の両方)で、ポストバック検証を渡します。
MVC 2ソースコードを閲覧した後、今のところ「迅速で汚い」修正を加えることができました。
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
他の誰かが私がこれをどのように回避できるかについて何かアイデアや提案を持っていますか?
IMO、MVCがhtml.editor/html.checkbox(for)メソッドを使用してレンダリングされたチェックボックスのクライアント側の必要な検証装置を設定する必要はないと思います。
注:ASP.NET MVC 2 RC2と、一致するMVC先物リリースのMicrosoftMVCJQueryValidation.jsを使用しています。
解決
それを処理する最も簡単な方法は、クライアント側の検証を削除する要素(主にチェックボックス)のルール( "削除]、[ルール])関数を次のように呼び出すことだと思います。
<script type="text/javascript">
$(document).ready(function() {
$('#Chargeable').rules('remove', 'required');
});
</script>