1

私のプロジェクトでは多言語機能が必要なので、使用するGlobal.resxと英語の用語Global.fr.resxのリストがあり、フランス語の用語のリストがあります。これは完全に機能します。@ Resources.Globalを使用して、必要な用語で呼び出すことができます。なんでもいい。

foreachただし、エンティティフレームワークから収集された値から、RESXファイルから動的にこれらの用語を表示する必要があります。何か案が?

もう少し情報:

コードは非常に単純で、まだC#を学習していて、ビューで作業しているので、文字通り@ Resources.Globalがあります。静的な用語を表示するものは何でも、foreachループがあります。

<ul>

@foreach (var category in Model.categories)

{ <li>@category.categoryName</li> }

</ul>

@category.categoryNameを@Resource.Globalからも呼び出すようにしたい場合。

4

1 に答える 1

1

私があなたを正しく理解していると仮定すると、動的キー名(つまり変数内の何か)に基づいてリソースファイルからアイテムを取得したいとします。このための拡張メソッドを次のように作成できます(明らかに、名前空間をリソースファイルの名前空間に置き換えます)。

 public static string Resource(this string name)
 {
     return new ResourceManager(
             "YourApp.Namespace.Resources",
             Assembly.GetExecutingAssembly()
                .GetString(name) ?? name;
 }

次に、のforeach場合、これを行うことができます(yourList文字列のリストであると想定):

foreach (string item in yourList)
{
    item = item.Resource();
}

または、Linqを使用するだけですか?

List<string> resourceStrings = yourList.Select(s => s.Resource()).ToList();
于 2013-02-01T10:40:35.607 に答える