ポストバックを行う際に価格フィールドを適切に検証するにはどうすればよいですか? 私はすでにチェックしました:How can I validate a currency field?しかし、それは私の期待を満たしていません。価格/通貨フィールドを正しく検証する方法は?
私が試した(そしていくつかのバリエーション)き:
[Range(0, (double)decimal.MaxValue)]
[DataType(DataType.Currency, ErrorMessage = "...")]
public decimal? Price {get; set;}
問題:
- それは検証を実行するには、[データ型...]属性を使用することはありません。
- 使用されている値が小数点以下の型でない場合、発行された検証エラーは標準の英語メッセージであり、カスタマイズする必要はありません。
- 10進数ではなく文字列を作成すると、10進数でない値または負の値に対して範囲の検証が行われますが、それでも期待通りの通貨形式ではない1.23456のような値が許可されます。
独自のカスタム検証または正規表現を作成する前に、組み込みのアプローチを探しています。次のようなもの:
[EmailAddress()]
public string ContactEmail {get; set; }
これは完全に私に合っています!
どのような確認が必要ですか? –
通常の通貨価値(通貨記号を除く)。例えば、9.99,0.80,128.50のようになります。擬似正規表現では:d * [.d [d]]。組み込みのソリューションがすでに存在する場合は、自分で作成する必要はありません。 – mdarefull
入力を小数点以下2桁までに制限したいのですか? (もしそうなら、いつも 'RegularExpressionAttribute'を使うことができます) –