我在数据库中使用的数据格式为男性为1,女性为2,未定义的GENDER为3。如何在我的视图中指定这些值,即1个显示男性,2个显示女性和3个显示未完成?可以从sql代码执行此操作但是如何从我的视图或控制器执行此操作?
另外,我想突出显示未定义性别的行。我怎么能这样做?
控制器块
public ActionResult Display()
{
return View(db.P_GET_USER().ToList());
}
查看块
@model IEnumerable<final.Models.P_GET_USER_Result>
@{
ViewBag.Title = "Display";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Display</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.USERNAME)
</th>
<th>
@Html.DisplayNameFor(model => model.NAME)
</th>
<th>
@Html.DisplayNameFor(model => model.GENDER)
</th>
<th>
@Html.DisplayNameFor(model => model.STATUS)
</th>
<th>
@Html.DisplayNameFor(model => model.CREATED_DATE)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.USERNAME)
</td>
<td>
@Html.DisplayFor(modelItem => item.NAME)
</td>
<td>
@Html.DisplayFor(modelItem => item.GENDER)
</td>
<td>
@Html.DisplayFor(modelItem => item.STATUS)
</td>
<td>
@Html.DisplayFor(modelItem => item.CREATED_DATE)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
答案 0 :(得分:1)
快速脏的方法是将条件代码放在您的视图中。另一种方法是在视图中添加辅助方法来执行此操作:
@helper GetGender(int gender)
{
string genderText = "";
switch (gender)
{
case 1:
genderText = "Male";
break;
case 2:
genderText = "Female";
case 3:
genderText = "Undefined";
break;
default;
break;
return genderText;
}
}
然后像:
一样使用它<td>
@GetGender(item.Gender)
</td>
更好的方法是将它移到某个常见位置,并在需要的每个视图中重复使用它。
比上面更好的是拥有一个视图模型,它根据视图中的Gender
属性值返回受尊重的文本,并且视图将使用该视图模型进行强类型化,并且只显示它。