1

次のビュー モデル フィールドがあります。

[Required]
[StringLength(9)]
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))]
public string Number{ get; set; }

正規表現フィルタは、9 文字を超える入力と正しい形式を処理し、検証メッセージをStringLength表示しますが、独自のデフォルト エラー メッセージも表示します。を削除する[StringLength(9)]と、2 つの異なるメッセージの問題が解決されますが、このフィルターは、データ型の最大サイズに関する貴重な情報を SQL に提供すると思います。他の方法はありますか?ありがとう、

4

2 に答える 2

2

削除StringLengthして次のもののみを持っている場合:

[Required]
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))]
public string Number{ get; set; }

あなたは良いはずです。はRequiredAttribute、プロパティが設定されているRegularExpressionAttributeことを検証し、それがすべて数字である 9 文字の文字列であることを検証します。

編集:

フィルターが SQL に貴重な情報を提供すると仮定することについてのコメントについて...いいえ、これを行うことを意図したものではありません。DataAnnotations は、クライアント層とプレゼンテーション層の検証の間のギャップを埋めることを目的としています。MVC は内部で DataAnnotations を使用して ViewModel を検証しますが、ViewModel は必ずしもドメイン モデルと見なされるとは限りません (読み取り: すべきではありません)。ViewModel は、ユーザーに表示したいもののモデルであり、ドメイン モデルは通常、データを表します。

少し前に、MVC 3 内の DataAnnotations と、フレームワークがそれらをクライアント側で目立たない JavaScript 検証に変換する方法について説明するブログを書きました。それは間違いなくチェックする価値があります。

コードはこちらブログはこちらです。

于 2012-04-30T20:36:54.337 に答える
1

StringLength 属性を変更して、次のように空白のエラー メッセージを含めます。

[StringLength(9, ErrorMessage = "")]
于 2012-04-30T20:33:33.060 に答える