【问题标题】:Asp.net mvc3 How to display byte as string? Asp.net mvc3Asp.net mvc3 如何将字节显示为字符串? ASP.NET mvc3
【发布时间】:2013-02-28 09:43:24
【问题描述】:

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

有什么想法吗? 谢谢! 这是模型代码的一部分:

这个来自details.cshtml:

【问题讨论】:

  • 你有代码吗?
  • 我已经用一些代码图片更新了我的问题
  • 这可以是一个下拉列表吗?
  • @user2099129 查看更新后的答案。
  • @user2099129 您可以将代码粘贴到编辑器本身中。无需创建图像和链接。当您粘贴代码时,选择代码块并单击编辑器上的{}。它将格式化文本

标签: c# asp.net asp.net-mvc-3 razor view


【解决方案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 标签中。

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

【讨论】:

  • 谢谢,它在 details.cshtml 和 delete.cshtml 中工作!但不在 index.cshtmL 中,我有 @Html.DisplayFor (modelItem=>item.GENDER)..
  • 愚蠢的问题,但您是否已将我示例中的 model.GENDER 更改为 index.cshtml 中的 item.GENDER?
  • 没问题,如果有帮助,请把我的标记为答案:)
【解决方案2】:

我认为根据你所说的,你可以在你的 details.cshtml 中使用如下剃刀语法将其内联编写

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

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

【讨论】:

    【解决方案3】:

    使用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 值绑定到您的模型。

    【讨论】:

      【解决方案4】:

      我建议您创建一个 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);
      

      }

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

      Html.DisplayFor(model=&gt;model.Gender)

      【讨论】:

        猜你喜欢
        • 2014-08-18
        • 1970-01-01
        • 2011-05-08
        • 2012-12-09
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        相关资源
        最近更新 更多