2010-12-17 8 views
1

データアノテーションを使用してクラスプロパティを検証しています。実行時にメモリにロードされる外部ファイルに検証エラーメッセージを格納する要件が発生しました。データアノテーションエラーメッセージを外部ファイルに保存できますか?

私はXMLファイルからのエラーメッセージのcollecitonをロードすることができるだろうと思ったし、その後にErrorMessageを設定:= [StringVariableHere] ...しかし、あなたは定数を使用する必要があると明らかにそれが動作しません。値。

エラーメッセージをResource.resxファイルに保存すると、エラーメッセージがプロジェクトにコンパイルされ、実行時にロードできなくなります。間違っていますか?

誰かが解決策を教えてもらえますか?

答えて

2

データ注釈属性を派生させ、メッセージの独自のソースを提供できます。

public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute 
{ 
    private string _displayName; 

    public RequiredAttribute() 
    { 
     ErrorMessageResourceName = "Validation_Required"; 
    } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     _displayName = validationContext.DisplayName; 
     return base.IsValid(value, validationContext); 
    } 

    public override string FormatErrorMessage(string name) 
    { 
     //LOOK HERE! ;) 
     var msg = GetTheTextHereFromYourSource(); 

     return string.Format(msg, _displayName); 
    } 
} 

私は(私の目標は、ローカライズされたエラーメッセージを取得することでしたが、考え方は同じです)私のブログにテクニックを説明しますhttp://blog.gauffin.org/2010/11/simplified-localization-for-dataannotations/

+0

jgauffinこんにちは、これは完璧だと私は除いて必要なものをexaclyのように見えます1つは... .NET framework 4のためだけに機能します。オリジナルの投稿で、3.5を使用することに制限されていると言わざるを得ないでしょう...コードを変更して動作させるにはどうすればよいですか?ありがとう! –

+0

は3.5で動作するはずです。どのようなエラーが出ますか? – jgauffin

+0

「ValidationContextが定義されていません」というエラーが表示される... –

関連する問題