定义从数据库中检索的整数值

时间:2018-04-08 16:26:04

标签: asp.net-mvc asp.net-mvc-4

我在数据库中使用的数据格式为男性为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>

1 个答案:

答案 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属性值返回受尊重的文本,并且视图将使用该视图模型进行强类型化,并且只显示它。