Ответ 1
Вы можете сделать, как предлагает Джастин, что-то вроде этого:
@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 с 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=
).