gpt4 book ai didi

asp.net-mvc - foreach 中 switch 语句的正确 Razor 语法

转载 作者:行者123 更新时间:2023-12-03 20:45:08 26 4
gpt4 key购买 nike

我有一段时间试图找到在我的 mvc View 页面上的 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>

}


......

}

最佳答案

你可以按照贾斯汀的建议去做,比如这样:

@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;
}

......
}

但是,如果您正在运行 MVC4 with Razor V2 ,您可以轻松地使用辅助方法(或常规方法):
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.
}
}
}

然后像这样使用它:
@foreach (var item in Model)
{
<tr class='@Html.GetCssClass(item.RegistrationStatus)'>

.....
}

这更具可读性,更易于维护。如果 GetCssClass() 方法返回 null那么 Razor V2 甚至不会渲染该属性(在本例中为 class= )。

关于asp.net-mvc - foreach 中 switch 语句的正确 Razor 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com