Chi*_*ago 14 asp.net-mvc razor
我有一段时间试图找到在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>
}
......
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*num 19
你可以像贾斯汀所说的那样做,就像这样:
@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>
break;
}
......
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用Razor V2运行MVC4,您可以轻松地使用辅助方法(或常规方法):
public static class MyHelperExtensions
{
public static string GetCssClass(this HtmlHelper helper, RegistrationStatus status)
{
// Make sure this mirrors values in RegistrationStatus enum!
switch (status)
{
case RegistrationStatus.New:
return "info";
case RegistrationStatus.Arrived:
return "success";
default:
return null; // Return null so that the attribute won't render.
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
@foreach (var item in Model)
{
<tr class='@Html.GetCssClass(item.RegistrationStatus)'>
.....
}
Run Code Online (Sandbox Code Playgroud)
这更易读,更易于维护.如果GetCssClass()方法返回,null则Razor V2甚至不会呈现属性(在本例中class=).
| 归档时间: |
|
| 查看次数: |
18483 次 |
| 最近记录: |