0

我在员工的 Db 中将 Gender 属性设置为 tiny int。当用户创建新员工时,我希望他通过单击单选按钮选择男性/女性(工作正常)。一切工作正常(创建和编辑),但我想以表格(用于索引、详细信息和删除)显示,不是 1 或 2,而是男性/女性。应该有一些 if 语句,但我不知道放在哪里或如何写正确的......

任何想法?谢谢!这是模型代码的一部分: 在此处输入图像描述

这个来自 details.cshtml:

在此处输入图像描述

4

4 回答 4

1

如果你想避免在你的模型上有额外的属性或向你的 viewbag 添加东西,你可以使用如下所示的 razor 语法内联编写它。

<div class="display-field">
@if (model.GENDER == 0){ @Html.Raw("Male") }
@else if (model.GENDER == 1){ @Html.Raw("Female") }
</div>

这不是我的想法,所以你可能需要检查确切的语法,但我认为这很接近。它也只会在 div 中转储“男性”或“女性”,您可能希望至少将其放在标签或 p 标签中。

然而,这不是我在生产应用程序中使用的方法,在整个代码中,我将使用性别枚举来赋予您的位值以意义,并扩展枚举以包含您可以解析以用于演示目的的描述。

于 2013-02-28T09:52:44.310 回答
0

我认为从你所说的你可以使用如下的剃刀语法在你的 details.cshtml 中内联编写它

<div class="display-field">
@if(model.GENDER ==0)
{
 <label>Male</label>
}
else if(model.Gender==1)
{
 <label>Female</label>
}
</div>

我认为这足以在详细信息页面中显示性别。如果您需要任何帮助,请发表评论

于 2013-02-28T10:12:11.353 回答
0

我建议您创建一个ViewModel类,以与数据库模型分离的视图友好格式表示 Employee 实体,并将其呈现在强类型视图中,以便您可以从控制器返回它。

提示:将Gender属性表示为字符串,ViewModel然后将字节转换为字符串表示controller

您可以将代码放在您的控制器中,例如:

public ActionResult EmployeeDetails(int id)

{

   //retrieve the entity from the DB
   //set other employee properties here.
   //I'm assuming you have set males to 2 and females to 1
   ...

   employeeViewObject.Gender = employeeObjectFromDB.Gender.Value==2?"Male":"Female";
   return View(employeeObjectFromDB);

}

您的强类型视图在显示性别时不会遇到问题,同时为您节省混合代码和标记的麻烦: <p>model.Gender</p>

Html.DisplayFor(model=>model.Gender)

于 2013-02-28T10:13:42.237 回答
0

使用condition ? true : false选择器

int gender = 1; // assumed male

String genderDesc = (gender == 1) ? "Male" : "Female";

您可以将此设置为下拉字段吗?在您的控制器中执行以下操作:

ViewBag.Gender = new[] 
        {
            new SelectListItem { Text = "Male", Value = "1" }, 
            new SelectListItem { Text = "Female", Value = "2" }
        }.WithEmpty();

WithEmpty()将为您提供一个空白选项,否则将选择最上面的选项。

@Html.DropDownListFor(m=> m.Gender, (Ienumarable<SelectListItem>)ViewBag.Gender);

这样,用户将看到男性和女性,但该值将使用 1 或 2 值绑定到您的模型。

于 2013-02-28T09:47:03.700 回答