【发布时间】:2013-03-07 22:01:00
【问题描述】:
我花了很长时间试图找到在我的 mvc 视图页面上的 foreach 循环内创建 switch 语句的正确语法。
这是我迄今为止的最新尝试(在许多其他尝试之后),但 Razor 引擎不会接受它。这里的错误就在@foreach 处,表明它缺少关闭}
@foreach (var item in Model) {
String s = item.RegistrationStatus.ToString();
// Make sure this mirrors values in RegistrationStatus enum!
switch (s)
{
case "New":
<tr class='info'>
break;
case "Arrived":
<tr class='success'>
break;
default:
<tr>
}
......
}
【问题讨论】:
-
它不适合您的最可能原因是 Razor 只能在标签格式正确且关闭时进行自动 C#/HTML 检测。如果您只想要一个开放标签,则必须使用其他响应者显示的“@:
”语法。 -
这只是个人的事情,但我不久前就停止在 Views 中使用 switch 语句,因为它真的会破坏可读性。辅助方法会更好。附带说明一下,最好使用
Html.Raw或MvcHtmlString.Create之类的东西,因为 Razor 可能会抛出警告,因为它找不到结束标签。
标签: asp.net-mvc razor