かるあ のメモ

アクセスカウンタ

zoom RSS DataAnnotationsでリソースから文字列を取得する。

<<   作成日時 : 2010/05/09 15:36   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

まぁ、そのまんまなんですが。リソースに指定できるフォーマットがよくわからなかったのでまとめておく。



リソースからのエラーメッセージの取得


DataAnnotationでエラーメッセージをリソースから取る時は、各検証属性のErrorMessageResourceNameプロパティーとErrorMessageResourceTypeプロパティーに値を設定すればいい。たとえばRangeAttributeのエラーメッセージをリソースから取得する場合はこんな風にする。




[Range(typeof(int), "20", "150", ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType=typeof(ErrorMessage))]
public string Age
{
 get { return _age; }
 set
 {
   Validator.ValidateProperty(value,
     new ValidationContext(this, null, null) { MemberName = "Age" });
   _age = value;
   OnPropertyChanged("Age");
 }
}

こうすれば、ErrorMessageResourceに定義したRangeErrorMessageの文字列をエラーとして表示してくれる(※1)。RangeErrorMessageが「年齢は20から150の間で入力してください。」のように定義されていれば


image

検証結果はこう表示される。


image

※1) リソースはアクセス修飾子を「Public」にしておかないと、リソースが見つからないという実行時エラーが発生するので注意。



リソースからのエラーメッセージの取得


とはいえ、検証対象のプロパティー名「年齢」とか、値の範囲対象となる「20」や「150」はリソースにじかに書きたくない。この場合はこんな風にリソースを定義すればいい。

image 

 

エラーメッセージの整形

検証属性を使ったエラーメッセージの表示は、各検証属性のFormatErrorMessageメソッドに定義されたフォーマットで整形が行われるので、各検証属性のこのメソッドの定義を確認すればいい。たとえばRange属性の場合、リソースの文字列に対して、検証が失敗したコントロールの名称(Display属性が定義されていればそのName)、Range属性に指定した最小値と最大値の3つをもとに整形が行われている。各検証属性でどのような整形が行われているかはこんな感じになっている見たい。

No検証属性123
1RequiredAttributeエラー対象の名前  
2RangeAttributeエラー対象の名前最小値最大値
3RegularExpressionAttributeエラー対象の名前正規表現パターン 
4StringLengthAttributeエラー対象の名前最低長最大長
5CustomValidationAttributeエラー対象の名前検証メソッドから
返されたメッセージ
 


あわせて読みたい(自作自演)。値の検証に関しては4ページから。


Silverlight 3で強化されたスタイルと値の検証

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
DataAnnotationsでリソースから文字列を取得する。 かるあ のメモ/BIGLOBEウェブリブログ
文字サイズ:       閉じる