Asp.net mvc 4 在MVC视图中显示时,将整数值替换为字符串
我有这样的看法:Asp.net mvc 4 在MVC视图中显示时,将整数值替换为字符串,asp.net-mvc-4,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")*@ </
@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>
@model IEnumerable
@{
ViewBag.Title=“Index”;
Layout=“~/Views/Shared/_LayoutPageArchitect.cshtml”;
}
指数
@*@ActionLink(“新建”、“创建”)*@
@*
@DisplayNameFor(model=>model.A\u C\u ID)
*@
@Html.DisplayName(“项目名称”)
@DisplayNameFor(model=>model.ProjectActivityMaster.ActivityName)
@DisplayNameFor(model=>model.ContractorMaster.ContractorName)
@DisplayNameFor(model=>model.IsActive)
@*
@DisplayNameFor(model=>model.CreatedBy)
@DisplayNameFor(model=>model.CreatedON)
@DisplayNameFor(model=>model.updateBy)
@DisplayNameFor(model=>model.updateOn)
*@
@foreach(模型中的var项目){
@*
@DisplayFor(modeleItem=>item.A\u C\u ID)
*@
@Html.Label(“项目”)
@DisplayFor(modelItem=>item.ProjectActivityMaster.ActivityName)
@DisplayFor(modelItem=>item.ContractorMaster.ContractorName)
@DisplayFor(modelItem=>item.IsActive)
@*
@DisplayFor(modelItem=>item.CreatedBy)
@DisplayFor(modelItem=>item.CreatedON)
@DisplayFor(modelItem=>item.UpdatedBy)
@DisplayFor(modelItem=>item.UpdateOn)
*@
@ActionLink(“编辑”,“编辑”,新的{id=item.A_C_id})|
@ActionLink(“细节”,“细节”,新的{id=item.A_C_id})|
@ActionLink(“删除”,“删除”,新的{id=item.A_C_id})
}
我的item.IsActive值以前是1/0我希望在id为1和id为0时将其视为True。我该怎么做呢?您可以在viewmodel上解析IsActive以返回true或false
public class Myviewmodel
{
public string IsActive { get; set; }
}
public class Mymodel
{
public bool IsActive { get; set; }
}
然后在将布尔值从模型映射到viewmodel时将其解析为字符串
提示:尝试使用NBuilder
我的item.IsActive值以前是1/0,如果1和
错误id 0。我该怎么做
包含1/0的INT
如果您想完全控制您可以显示的内容,那么最好使用显示模板
创建模板
在共享
文件夹下创建一个名为DisplayTemplates
的文件夹(如果您仍然没有)。然后创建一个名为CustomInt.cshtml
的文件,您当然可以选择想要的任何名称,除了那些类似于数据类型的名称(例如Int、Boolean等)。然后在模板上,您需要具有以下内容:
@model System.Int32
@if (Model == 0)
{
@:True
}
else if (Model==1) {
@:False
}
你如何使用它
然后,在您想要显示IsActive
的视图上,您需要执行以下操作:
@Html.DisplayFor(m => m.IsActive, "CustomInt")
请注意,我们为html助手指定了一个模板名称
陷阱
使用模板时需要非常小心。由于IsActive
是一个int,因此它可以具有0
和1
以外的值。因此,如果值不是这两个值,则不会打印任何内容。但这不是什么大问题,因为您可以轻松地添加另一个else
并打印错误或其他内容。但是我想你很确定,IsActive
将始终具有0
或1
已修改模板以捕获意外值:
@model System.Int32
@if (Model == 0)
{
@:True
}
else if (Model==1) {
@:False
}
else {
@:What is this value? The system was hacked!
}
IsActive
是否为布尔类型?nop INT包含1/0Awesome@von v。很好的回答和解释:)