2

私の Silverlight RIA アプリケーションでは、10 進数のプロパティを検証する必要があります。次のように、RegularExpression と Range を使用して、メタデータのプロパティに注釈を付けようとしました。

//[RegularExpression(@"^[1-9]\d*(\.\d+)?$", ErrorMessage = "Quantity has to be a positive numeric value")]      
[Range(typeof(decimal), "1", "1000",  ErrorMessage = "Quantity must be between {1} and {2}")]

新しいエンティティを追加すると、どちらも数値を検証できますが、文字を入力すると、どちらもエラーにフラグを立てませんが、プロパティも更新しません。たとえば、最初に 2 を入力してから「test」に変更すると、テキスト ボックスにエラー メッセージは表示されません。エンティティを保存すると、プロパティ値は 2 のままです。

これは予想される動作ですか?はいの場合、数値以外のエントリにエラーとしてフラグを付けるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

原因を見つけました。プロパティタイプは10進数であるため、テキストを入力すると、例外がスローされ、「Set」に到達することはありません。したがって、検証は実行されません。コントロールに「ValidatesOnExceptions=True」を設定すると、デフォルトのエラーメッセージ「Invalidformat」が表示されます。

于 2013-01-07T15:48:20.117 に答える