9

次のような3つのプロパティを持つ単純なViewModelがあります。

public bool RememberMe { get; set; }

私の見解では、@Html.CheckBoxFor(p => p.RememberMe) クライアント側の検証を使用して使用している単純なものがあります。Html.EnableClientValidation();

なぜこれが必須フィールドとして設定されているのですか?

4

2 に答える 2

12

null許容ブール値を試してください。

public bool? RememberMe { get; set; }

参照型には、いくつかのデフォルトの検証ルールが適用されます。参照型がnull許容でない場合、デフォルトで必須になります。これを最もよく表すのは、テキストボックスを使用していくつかのプロパティを表示する場合です(サイトで行うことではありませんが、テスト目的には適しています)。

モデル:

public bool? MyBool { get; set; }
public int MyInt { get; set; }

意見:

 @Html.TextBoxFor(p => p.MyBool)
 @Html.TextBoxFor(p => p.MyInt)

ビューソースから、ページで何が起こっているかを確認できます。

<input id="MyNullBool" name="MyNullBool" type="text" value="">
<input data-val="true" data-val-required="The MyBool field is required." id="MyBool" name="MyBool" type="text" value="False">
<input data-val="true" data-val-number="The field MyInt must be a number." data-val-required="The MyInt field is required." id="MyInt" name="MyInt" type="text" value="0">

null許容型のboolには検証属性がありませんが、boolにはdata-val-requiredタグがあります。intにはdata-val-requiredタグとdata-val-number属性があります

もちろん、チェックボックスでは、チェックする(true)かチェックしない(false)しかできないため、必要なタグはあまり使用されないため、これはすべてかなり冗長です。

于 2013-02-21T00:38:27.820 に答える
-2
@Html.CheckBoxFor(c => c.TermsAndConditions, new { required = "required" })
@Html.ValidationMessageFor(c => c.TermsAndConditions, "you must agree to terms and conditions of Service.)"
于 2014-05-23T10:53:48.667 に答える