理由はわかりませんが、MVC3のデータ注釈は定数値を要求します。これは、エラーメッセージや表示名などでは理解できません。私はこれらの注釈が大好きです。とても使いやすく、とても強力ですが、複数の言語をサポートする必要がある場合はどうでしょうか。
私が次のモデルを持っていると想像してください:
public class Person
{
public string First_Name { get; set; }
}
何も変更せず、MVC3が構築するCRUDビューを使用すると、テキストフィールドの横に「First_Name」というラベルが表示されるので、データ注釈を追加して表示名を次のように変更します。
public class Person
{
[Display(Name="First name")]
public string First_Name { get; set; }
}
これは問題なく機能します。しかし、ユーザーの言語に応じて異なる表示名を指定したいのですが、以前に作成した関数を使用して、GetDisplayName(string ToGet, string Language)
関心のある文字列を返すだけですが、データ注釈をこれに変更すると、次のようになります。
public class Person
{
[Display(Name=GetDisplayName("First_Name", "English"))]
public string First_Name { get; set; }
}
次に、注釈に定数値が必要であるというコンパイラエラーが発生します。なぜですか????
誰かが私がやろうとしていることを達成する方法を知っていますか?ありがとう
アップデート
わかりました。これを行うための最良の方法は、.resx
以下のいくつかの回答と他の投稿の回答にあるリソースファイルを使用することです。これはほとんどの部分でうまく機能します。
変数名でリソースをリクエストする方法を知っている人はいますか?今回はデータ属性のコンテキストではなく、コントローラーとビューのみです。
基本的に、現時点ではでリソースを取得していますが、動的に生成された文字列であるwhere@Resources.SomeKey
の関数内でそれを使用できるようにしたいと思います。@Resources["SomeOtherKey"]
SomeOtherKey