asp.net-mvc-3 boolean checkbox display-templates

asp.net mvc 3 - ¿Cómo invalido DisplayFor boolean?



asp.net-mvc-3 checkbox (4)

¿Qué tal sólo esta cosa simple:

@((bool)item.Ativo ? "Yes" : "No")

¿Cómo creo una plantilla de visualización para que pueda mostrar un bool como Sí o No no es una casilla de verificación? Usando mvc3

<%: Html.DisplayFor(model => model.SomeBoolean)%>


Este es un post antiguo, pero estaba teniendo problemas para encontrar una respuesta actual.

En realidad, hay un método @HTML en MVC 5, @Html.Display**Text**For(model => model.SomeBoolean) .


Puedes extender HtmlHelper para bool.

y recuerde que debe usar la dirección YesNoExtensions namespace en la página de afeitar. rem: podemos sobrecargar DisplayFor para boolean con signo de función de cambio.

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); } } }

y la hoja de afeitar.

<%@ import namespace=''SampleExtensions'' %> <%: Html.DisplayFor(model => model.SomeBoolean, true)%>

el último parámetro verdadero es ficticio para el derecho de selección de Pantalla, que hemos sido sobrecargados por nosotros. Espero de utilidad.


Tuve que crear algo similar para que mostrara "Sim" y "Não" (portugués Sí / No). He creado el siguiente archivo:

Views/Shared/DisplayTemplates/Boolean.ascx

Y añadió el siguiente código:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> <%= (bool) ViewData.Model ? "Sim" : "Não" %>

¡Espero que esto ayude!

EDITAR Olvidó, en su opinión, simplemente llámelo así:

<%= Html.DisplayFor(i => item.Ativo) %>

EDITAR 2 Para un nullable (bool?), Intente esto:

<%= (ViewData.Model == null) ? "NA" : (ViewData.Model == true) ? "Y" : "N"%>

EDIT 3 usando la sintaxis de Razor (Views / Shared / DisplayTemplates / Boolean.cshtml):

@{ Layout = null; } @(ViewData.Model ? "Sim" : "Não")