2016-09-02 2 views
1

フォーム検証時にエラーメッセージを表示しようとしています。 私はモデルクラスの注釈を持つプロパティを持っている:データ型がintの場合、値 ''は無効です

[Required(ErrorMessage="The number attribute is required")] 
public int Level { get; set; } 

それは動作しませんが、私はstringにデータ型を変更する場合、注釈のエラーメッセージが表示されます。これは、intがサポートされていないことを意味しますか?

+0

[intは値型ですので決してnullではありません](http://stackoverflow.com/questions/5057267/what-is-the-difference-between-a-reference-type-and-value-type-in -c) – Liam

答えて

4

あなたは0を取得します。そのため、検証はそのタイプでは機能しないように見えます.0は値です。

タイプをnull可能なint(int?)に変更してください。これで問題はありません。

+0

あなたの答えはうまくいった、ありがとう! –

0

ユーザーの入力が空の文字列の場合、値はnullに変換されます。ヌル値はint型変数に代入することはできません。したがって、EFバリデーションに到達する前に、null値をint変数にバインドするときに、すでにエラーがスローされています。したがって、[Required(ErrorMessage="The number attribute is required")]コードは実行されません。

nullable int(int?)を使用すると、ユーザーのnull値と空の値が受け入れられます。その後、EF検証が実行され、[Required]注釈を使用して「空入力なし」の検証を実行できます。

関連する問題