我在详细信息视图中有一个
<tr>
<td>@Html.DisplayNameFor(model => model.ACTION_STATUS):</td>
<td>@Html.DisplayFor(model => model.ACTION_STATUS)</td>
</tr>
我该如何应用:
如果Action_status ==,则显示Active elsion如果Action_status == 0,显示不活动,ELES DELETED
我建议使用字典而不是条件。在这种情况下,如果有几个分支,那似乎很容易做到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>
我认为此解决方案更干净。
编辑:要将编辑解决到问题。
我认为最好的方法,尤其是现在有3种不同的状态选项,而不仅仅是2(正如我在我的原始答案中建议)。
。1)创建类似于Indrit Kello的答案的字典,但将其"静态数据"在您的项目中的某个地方。也许它是从数据库表状态表中加载的。也许是您从配置文件加载的东西,或者它只是在称为" startants.cs"等静态类中进行了硬编码。取决于情况。如果是硬编码,您可能会有类似的课程:
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)如果您必须在多个不同的视图模型中进行此查找,则可能需要考虑将查找代码移动到常量类中,以便可以与多个位置共享相同的代码。尤其是,如果您需要实施hte案例,因为tatus可能由于某种原因可能不在字典中(someeraish等的值= -99)