繁体   English   中英

asp.net mvc3如何将字节显示为字符串? ASP.NET MVC3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM