在MVC中的视图中显示时,用字符串替换整数值

时间:2013-04-12 09:55:57

标签: asp.net-mvc-4

我有这样的观点:

@model IEnumerable<PMS.Models.Activity_Contractor>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_LayoutPageArchitect.cshtml";
  }

 <h2>Index</h2>

 <p>
   @*@Html.ActionLink("Create New", "Create")*@
  </p>
<table>
<tr>
     @*<th>
        @Html.DisplayNameFor(model => model.A_C_ID)
    </th>*@

    <th>
        @Html.DisplayName("ProjectName")
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ProjectActivityMaster.ActivityName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ContractorMaster.ContractorName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.IsActive)
    </th>
  @*  <th>
        @Html.DisplayNameFor(model => model.CreatedBy)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.CreatedON)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.UpdatedBy)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.UpdatedON)
    </th>*@
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    @*<td>
        @Html.DisplayFor(modelItem => item.A_C_ID)
    </td>*@
    <td>
        @Html.Label("Project")
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ProjectActivityMaster.ActivityName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ContractorMaster.ContractorName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.IsActive)
    </td>
   @* <td>
        @Html.DisplayFor(modelItem => item.CreatedBy)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.CreatedON)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.UpdatedBy)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.UpdatedON)
    </td>*@
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.A_C_ID  }) |
        @Html.ActionLink("Details", "Details", new { id=item.A_C_ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.A_C_ID })
    </td>
     </tr>
}

 </table>

我的item.IsActive值曾经是1/0我希望看到它为True如果1和False id为0.我该怎么做?

2 个答案:

答案 0 :(得分:1)

  

我的item.IsActive值曾经是1/0我想把它看成是真如果1和   假身份证0.我怎么能这样做?

     

INT包含1/0

如果您希望完全控制可以显示的内容,那么最好使用显示模板。

创建模板

如果您还没有,请在DisplayTemplates文件夹下创建一个名为Shared的文件夹。然后创建一个名为CustomInt.cshtml的文件,您当然可以选择任何您想要的名称除了那些与数据类型相似的名称(例如Int,Boolean等)。然后在模板上你需要这个:

@model System.Int32

@if (Model == 0)
{
    @:True
}
else if (Model==1) {
    @:False
}

您如何使用

然后在您希望显示IsActive的视图上,您​​需要执行此操作:

@Html.DisplayFor(m => m.IsActive, "CustomInt")

请注意,我们为html helper指定了模板名称。

陷阱

使用模板时需要非常小心。由于IsActive是一个int,因此它可以具有01以外的值。因此,如果该值不是那两个,则不会打印出任何内容。但这不是一个大问题,因为您可以轻松添加另一个else并打印错误或其他内容。但我认为您非常确定IsActive将始终拥有01

修改模板以捕获意外值:

@model System.Int32

@if (Model == 0)
{
    @:True
}
else if (Model==1) {
    @:False
}
else {
    @:What is this value? The system was hacked!
}

答案 1 :(得分:0)

您可以在viewmodel上解析IsActive以返回true或false。

public class Myviewmodel
{
    public string IsActive { get; set; }

}

public class Mymodel
{
    public bool IsActive { get; set; }
}

然后在将模型从模型映射到viewmodel时将你的布尔值解析为字符串?

提示:尝试使用NBuilder