我在MVC 3视图中编写此代码:
<table>
<tr>
<th>@SecondIndexStrings.Activity_ActivityName</th>
<th>@SecondIndexStrings.Activity_DateStarted</th>
<th>@SecondIndexStrings.Activity_ProficiencyLevel</th>
</tr>
@foreach (var activity in Model.Activities)
{
<tr>
<td>@activity.ActivityName</td>
<td>@activity.DateStarted.ToShortDateString()</td>
<td>@new ResourceManager(typeof(IndexStrings)).GetString(activity.ProficiencyLevel.ToString())</td>
</tr>
}
</table>
由于某种原因,带有“@new ResourceManager ...”的行无法识别为有效,并且每当我运行它时都会出现编译错误。
如果我只编写@ResourceManager,则文本变为蓝色表示被识别为有效类,对于IndexStrings资源是相同的,但是,整个事情似乎并不知道那些应该是类。
我做错了什么?
谢谢。
答案 0 :(得分:5)
由于空格,您必须使用括号来帮助它查看表达式的开始/结束位置:
@(new ResourceManager(typeof(IndexStrings)).GetString(activity.ProficiencyLevel.ToString()))
您可能还想考虑在HtmlHelper
上添加辅助方法,可能作为扩展方法,因此您可以使用以下内容:
@Html.Resource<IndexStrings>(activity.ProficiencyLevel)
或类似的,可能看起来像:
public static string Resource<T>(this HtmlHelper html, object key) {
return new ResourceManager(typeof(T)).GetString(key.ToString());
}