我在员工的 Db 中将 Gender 属性设置为 tiny int。当用户创建新员工时,我希望他通过单击单选按钮选择男性/女性(工作正常)。一切工作正常(创建和编辑),但我想以表格(用于索引、详细信息和删除)显示,不是 1 或 2,而是男性/女性。应该有一些 if 语句,但我不知道放在哪里或如何写正确的......
任何想法?谢谢!这是模型代码的一部分:
这个来自 details.cshtml:
我在员工的 Db 中将 Gender 属性设置为 tiny int。当用户创建新员工时,我希望他通过单击单选按钮选择男性/女性(工作正常)。一切工作正常(创建和编辑),但我想以表格(用于索引、详细信息和删除)显示,不是 1 或 2,而是男性/女性。应该有一些 if 语句,但我不知道放在哪里或如何写正确的......
任何想法?谢谢!这是模型代码的一部分:
这个来自 details.cshtml:
如果你想避免在你的模型上有额外的属性或向你的 viewbag 添加东西,你可以使用如下所示的 razor 语法内联编写它。
<div class="display-field">
@if (model.GENDER == 0){ @Html.Raw("Male") }
@else if (model.GENDER == 1){ @Html.Raw("Female") }
</div>
这不是我的想法,所以你可能需要检查确切的语法,但我认为这很接近。它也只会在 div 中转储“男性”或“女性”,您可能希望至少将其放在标签或 p 标签中。
然而,这不是我在生产应用程序中使用的方法,在整个代码中,我将使用性别枚举来赋予您的位值以意义,并扩展枚举以包含您可以解析以用于演示目的的描述。
我认为从你所说的你可以使用如下的剃刀语法在你的 details.cshtml 中内联编写它
<div class="display-field">
@if(model.GENDER ==0)
{
<label>Male</label>
}
else if(model.Gender==1)
{
<label>Female</label>
}
</div>
我认为这足以在详细信息页面中显示性别。如果您需要任何帮助,请发表评论
我建议您创建一个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)
使用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 值绑定到您的模型。