[英]Asp.net mvc3 How to display byte as string? Asp.net mvc3
我在员工中将性别属性设置为Db中的tiny int。 当用户创建新员工时,我希望他通过单击单选按钮选择男/女(工作正常)。 一切工作正常(创建和编辑),但我想以表格形式显示(用于索引,详细信息和删除),而不是1或2,而是男性/女性。 应该有一些if语句,但是我不确定在哪里放置或如何编写正确的语句...
任何想法? 谢谢! 这是模型代码的一部分:
这是来自details.cshtml:
使用condition ? true : false
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绑定到您的模型。
如果要避免在模型上具有额外的属性或向视图包中添加内容,可以使用如下所示的razor语法内联编写。
<div class="display-field">
@if (model.GENDER == 0){ @Html.Raw("Male") }
@else if (model.GENDER == 1){ @Html.Raw("Female") }
</div>
那太过头了,所以您可能需要检查确切的语法,但是我认为这已经很接近了。 它也只会在div中转储“ Male”或“ Female”,您可能希望至少将其放在标签或p标签中。
但是,这不是我将在生产应用程序中使用的方法,在整个代码中,我将使用性别枚举为您的位值赋予含义,并扩展枚举以包括您可以出于演示目的而解析的描述。
我认为从您所说的内容来看,您可以使用以下razor语法内联地编写它,如下所示。
<div class="display-field">
@if(model.GENDER ==0)
{
<label>Male</label>
}
else if(model.Gender==1)
{
<label>Female</label>
}
</div>
如果您需要任何帮助,我认为这足以在详细信息页面中显示性别。
我建议您创建一个ViewModel类,以与数据库模型分离的View友好格式表示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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.