我对MVC很新,但我有以下代码:
<td>
@Html.DisplayFor(modelItem => item.Status)
@switch (item.Status)
{
case 0: Html.DisplayText("Requested");
break;
case 1: Html.DisplayText("In Progress");
break;
case 2: Html.DisplayText("Declined");
break;
default:
Html.DisplayText("Undefined");
break;
}
</td>
它呈现“Html.DisplayFor”很好,这是一个整数。但实际上我想在同一位置显示基于item.Status的等效文本。但这不起作用。我可以改变原始类处理Get和Set方法中状态的方式,但是我如何这样做呢?
答案 0 :(得分:4)
您可以在ViewModel上创建一个为您执行此逻辑的属性。如
public string StatusDescription {
get {
switch (this.Status) {
case 0:
return "Requested";
case 1:
return "In Progress";
// yada yada yada
}
}
}
在您看来,用
替换switch语句Html.DisplayFor(modelItem => item.StatusDescription);
答案 1 :(得分:1)
我会创建一个声明性帮助方法(http://weblogs.asp.net/mikaelsoderstrom/archive/2010/10/06/declarative-helpers-in-razor.aspx),根据状态显示文本。 然后,您可以在视图中将其命名为:
@Html.MyHelper(status)
甚至更好,就像原帖上的评论者所说,你可以在你的ViewModel上创建一个属性来执行此操作。
答案 2 :(得分:0)
我将其作为模型上的StatusText
属性公开。
这种逻辑应该与你的UI分开。