从Razor

时间:2015-05-06 07:34:03

标签: c# asp.net-mvc razor

我们有一个部分视图,它呈现包含代表菜单项的<ul>项的<li>。它们目前在结构上是静态的,并且使用资源文件处理多语言,如下所示:

<li><a href="@Url.Action("commissionlist", "commissions")">@Resources.Labels.Commissions</a></li>

但是,我需要动态构建菜单结构。所以我有一个菜单项对象列表,每个对象都有一个MenuResourceTag字段。

如何获得一个表示我需要查找的属性名称的字符串(例如&#34;佣金&#34;)来访问Resources.Labels上相应属性的值?

我知道答案将涉及反思,但我发现类似事情的所有示例都需要一个实例的Resources.Labels类,我无法解决如何在Razor中获得它。

1 个答案:

答案 0 :(得分:2)

您可以在模型中设置标签文本,但如果您想继续直接调用资源文件,那么您可以尝试这样做:

资源文件

| 姓名 | 价值 |
| Text_A | a |
| Text_B | b |

查看

<ul>
    @foreach (var x in new List<string>{ "A", "B" })
    {
        <li><a href="@Url.Action("commisionList", new { Data = x})">@Resources.ResourceManager.GetString("Text_" + x)</a></li>
    }
</ul>

使用ResourceManager按键访问值。