new*_*_86 21 checkbox boolean display-templates asp.net-mvc-3
如何创建显示模板,以便我可以显示bool为是或否不是复选框?使用mvc3
<%: Html.DisplayFor(model => model.SomeBoolean)%>
Run Code Online (Sandbox Code Playgroud)
mat*_*scb 22
我必须创建类似的东西,以便显示"Sim"和"Não"(葡萄牙语是/否).我创建了以下文件:
Views\Shared\DisplayTemplates\Boolean.ascx
Run Code Online (Sandbox Code Playgroud)
并添加了以下代码:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%= (bool) ViewData.Model ? "Sim" : "Não" %>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
编辑 忘了,在你看来,简单地称之为:
<%= Html.DisplayFor(i => item.Ativo) %>
Run Code Online (Sandbox Code Playgroud)
编辑2 对于可空(bool?),试试这个:
<%= (ViewData.Model == null) ? "NA" : (ViewData.Model == true) ? "Y" : "N"%>
Run Code Online (Sandbox Code Playgroud)
编辑3 使用Razor语法(Views\Shared\DisplayTemplates\Boolean.cshtml):
@{ Layout = null; }
@(ViewData.Model ? "Sim" : "Não")
Run Code Online (Sandbox Code Playgroud)
Jer*_*xon 13
这个简单的事情怎么样:
@((bool)item.Ativo ? "Yes" : "No")
Run Code Online (Sandbox Code Playgroud)
你可以扩展HtmlHelper for bool.
并记住你必须在剃刀页面上使用方向YesNoExtensions命名空间.rem:我们可以使用更改函数符号重载DisplayFor for boolean.
public namespace SampleExtensions
{
public static class YesNoExtensions
{
public static MvcHtmlString DisplayFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, bool flag = true)
{
object o = expression.Compile().Invoke(html.ViewData.Model);
if (o.GetType() == typeof(bool))
{
if ((bool)o)
return new MvcHtmlString("Yes");
else
return new MvcHtmlString("No");
}
return DisplayFor(html, expression);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和剃刀页面.
<%@ import namespace='SampleExtensions' %>
<%: Html.DisplayFor(model => model.SomeBoolean, true)%>
Run Code Online (Sandbox Code Playgroud)
最后一个参数true是虚拟的选择权DisplayFor由我们重载.我希望有用.
这是一个老帖子,但我找不到当前的答案.
在MVC 5中实际上有一个@HTML方法@Html.DisplayTextFor(model => model.SomeBoolean).
| 归档时间: |
|
| 查看次数: |
14157 次 |
| 最近记录: |