MVC模型布尔显示是或否

我在mvc 4entity framework4.5中的模型中有一个布尔字段

我想在我的视图中显示该字段

我用这个电话

@item.isTrue 

但我得到了真或假,

我想在真实时得到肯定,在虚假时立刻肯定

我该怎么办?

在你看来:

 @(item.isTrue?"Yes":"No") 

你可以使用这样的自定义html助手扩展方法:

 @Html.YesNo(item.IsTrue) 

这是以下代码:

 public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo) { var text = yesNo ? "Yes" : "No"; return new MvcHtmlString(text); } 

通过这种方式,您可以使用一行Razor代码在整个站点中重复使用它。

要扩展DigitalD的答案,您可以考虑将其包含在扩展方法中:

 public static string ToFriendlyString(this Boolean b) { return b ? "Yes" : "No"; } 

然后你可以在整个地方使用它:

 @item.IsTrue.ToFriendlyString() 

在你的模型中写下这样的东西:

 public Nullable Active { get; set; } public string ISActive { get { return (bool)this.Active ? "Yes" : "NO"; } } 

Active是一个布尔属性,我们创建ISActive属性以读取其值并向用户显示适当的消息。

这有点晚了,但……

其他答案答案遗漏的一个有用方法是Custom DisplayTemplate方法。 通过这个代码:

 @model bool 

@{Model ? "Yes" : "No"}

进入显示模板文件夹( /Views/Shared/DisplayTemplates )中的部分视图(可能是YesNo.cshtml )。 然后,在您的视图中,使用以下行:

 @Html.Display(item.isTrue,"YesNo") 

其中“YesNo”是您命名为Partial View的任何内容, 减去.cshtml扩展名

通过添加第二个字符串( templateName ),您可以告诉DisplayExtensions使用您的自定义模板显示布尔值,而不是默认方法(复选框)。

对于这种情况,这种方法可能不是最简单的方法,但它可以用于更复杂的情况(例如,用于选择日期的自定义日历)

如果你匆忙,或者你使用整数而不是位。 (我这样做是为了以后你有第三个选项,你的yes/no变成yes, no, octopus ,就像我一直似乎做的那样,这里是简单明了的快速肮脏的方式……在顶部声明你的变量剃刀观点:

 @model MyModel @using My.Models; @{ ViewBag.Title = "Index"; ViewBag.ReturnUrl = ""; string Active = ""; //This will hold your "Yes" or "No" } 

当您浏览项目时……以下代码将您的字符串变量Active设置为“Yes”或“No”,然后您只需将其显示在页面上(没有@Html.DisplayFor(...)标记。

 @{if (item.Active == 0){Active = "No";}else{Active = "Yes";}} @Active 

如果你还不知道,用@{}围绕整个“if”语句会让生活变得轻松 – 括号内不需要@s …