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 …