2012-02-21 5 views
2

DisplayFormatデータアノテーションを使用してモデルデータをフォーマットしたいが、リソースファイルに保存されているフォーマット文字列を使用したい。私は、エラーメッセージを指定するときなどに、リソースタイプと名前をいくつかのデータアノテーションに渡すことができました。私のリソースファイルからフォーマット文字列を取得するようにDisplayFormatに指示するにはどうすればよいですか?リソース文字列を使用したDisplayFormatデータアノテーション

答えて

7

標準DisplayFormat属性では、これを許可していません。

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 
public class LocalizedDisplayFormatAttribute : Attribute, IMetadataAware 
{ 
    public string DataFormatStringResourceName { get; set; } 
    public bool ApplyFormatInEditMode { get; set; } 

    public void OnMetadataCreated(ModelMetadata metadata) 
    { 
     if (!string.IsNullOrEmpty(DataFormatStringResourceName)) 
     { 
      if (ApplyFormatInEditMode) 
      { 
       metadata.EditFormatString = MyMessages.ResourceManager.GetString(DataFormatStringResourceName); 
      } 
      metadata.DisplayFormatString = MyMessages.ResourceManager.GetString(DataFormatStringResourceName); 
     } 
    } 
} 

、その後:

public class MyViewModel 
{ 
    [LocalizedDisplayFormat(DataFormatStringResourceName = "DobFormat", ApplyFormatInEditMode = true)] 
    public DateTime Dob { get; set; } 
} 

MyResources.resxの内側にあなたがDobFormat文字列値可能性があり:{0:dd-MM-yyyy}をあなたはこの機能を実現するためにカスタム属性を書くことができます。

+0

私はこれを自分で行う必要があると考えました。ありがとう –

+0

'MyMessages'は' MyResources'権利ですか?それが型として渡されたならば完璧だったでしょう – CME64

関連する問題