0

我有这样的看法:

@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 if 1 和 False id 0。我该怎么做?

4

2 回答 2

1

我的 item.IsActive 值曾经是 1/0 我想将其视为 True if 1 和 False id 0。我该怎么做?

包含 1/0 的 INT

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

创建模板

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 那么它可以有一个除0and之外的值1。因此,如果该值不是这两个值,则不会打印任何内容。但这不是一个大问题,因为您可以轻松添加另一个else并打印错误或其他内容。但我认为你很确定IsActive总是有0or 1

捕获意外值的修改模板:

@model System.Int32

@if (Model == 0)
{
    @:True
}
else if (Model==1) {
    @:False
}
else {
    @:What is this value? The system was hacked!
}
于 2013-04-12T10:22:14.057 回答
0

您可以在视图模型上解析 IsActive 以返回 true 或 false。

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

}

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

然后在将布尔值从模型映射到视图模型时将它们解析为字符串?

提示:尝试使用 NBuilder

于 2013-04-12T10:06:27.260 回答