我在详情视图中有这个
<tr>
<td>@Html.DisplayNameFor(model => model.ACTION_STATUS):</td>
<td>@Html.DisplayFor(model => model.ACTION_STATUS)</td>
</tr>
如何申请:
如果ACTION_STATUS ==,则显示Active Else如果ACTION_STATUS == 0,则显示Inactive,Else Deleted
答案 0 :(得分:0)
我建议使用Dictionary而不是if条件。在这种情况下,做一个if条件似乎很容易,但如果有几个分支,这不是正确的方法。
Dictionary<int, string> data = new Dictionary<int, string>();
data.Add(1, "Active");
data.Add(0, "Inactive");
data.Add(-1, "Deleted");
ViewData["data"]=data;
在视图中,您可以获得它们:
@{
var Dictionary = (Dictionary<int, string>)ViewData["data"];
}
并将其显示为
<td>@Dictionary[model.ACTION_STATUS]</td>
我认为这个解决方案更清晰。
答案 1 :(得分:-1)
编辑:解决问题的编辑问题。
我认为最好的方法,特别是现在有3个不同的状态选项,而不仅仅是2,是做以下事情(正如我在原始答案中所推荐的那样)。
1)创建一个类似于Indrit Kello的答案的字典,但要制作静态数据&#34;你项目的某个地方。也许它是从动作状态的数据库表中加载的。也许它是从配置文件中加载的东西,或者它可能只是在名为&#34; Constants.cs&#34;的静态类中进行硬编码。等取决于具体情况。如果它是硬编码的,你可能会有一个类:
public static class Constants
{
public static Dictionary<int, string> ActionStatuses = new Dictionary<int, string>(){
{ 1, "Active" },
{ 0, "Inactive"},
//etc. Additional statuses go here. No comma on the final entry...
};
}
2)向视图模型添加新属性,以解码此状态的显示文本。您可以使用属性等来装饰它,因为您可以正常的VM属性,因此您可以继续使用@ Html.DisplayFor等,
public class MyViewModel
{
// Other properties etc...
public string ActionStatusDisplayText { get { return Constants.ActionStatuses[this.ACTION_STATUS]}; }
}
3)在您的视图中使用此新属性。
<td>@Html.DisplayFor(model => model.ActionStatusDisplayText)</td>
4)如果必须在多个不同的视图模型中进行此查找,您可能需要考虑将查找代码移动到Constants类中,以便可以与多个位置共享相同的代码。特别是如果你需要实现hte情况,因为某些原因可能不会出现在字典中(对于某些原因,值= -99等)