2

は、私はこのようなViewModelに持っている:私はこのようなものを行うときさまざまなリソースファイルで共通のViewModelを作成するにはどうすればよいですか?

public class MyViewModel 
{ 
    [Display(Name = "One_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string One { get; set; } 

    [Display(Name = "Two_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string Two { get; set; } 
} 

ページ1に使用され、素晴らしい作品(例えば、リソースを引き戻す):

@Html.LabelFor(model => model.One) 

しかし、私はまた、このViewModelをページ2に使いたいのですが、プロパティを別のリソースファイル(例えば、Resources.User.Resource2)に向けることはできません。

私はクラスを捨てる必要はありませんが、私はいくつかのオブジェクト指向のトリックに開放されます。

属性の引数は、文字列、定数、typeofまたは配列式でなければならないという問題があります。

この問題を解決するにはどうすればよいですか?

+0

私は彼が必要なときにダーリンディミトロフはどこですか? :) – RPM1984

答えて

0

MVCがこのようなシナリオをサポートしていないようです。独自のResourceTypeクラスを提供することはできますが、表示文字列を返す静的なプロパティ(例ではpublic static string One_Namepublic static string Two_Nameなど)が必要であり、必要なことを行うためのエレガントな方法はありません。

しかし、Html.LabelForは特に壊滅的なことは何もしていないので、あなたは簡単に見ることができません。独自の<label>要素を作成し、ローカライズされた文字列を直接取得してください。これはResourceManager.GetStringと同じくらい簡単です。たいていの場合、Html.LabelForを使用することはできますが、特定のビューで表示テキストを変更する必要がある(うまくいけばまれな)ケースに自分のラベルを書くことに頼るだけです。

関連する問題