2010-02-03 14 views
8

¿Cuál es la mejor manera de imprimir "Sí" o "No" en función de un valorAyuda con C# y bool en asp.net mvc

En mi opinión, quiero imprimir

Model.isStudent

y no quiero Verdadero o Falso, quiero Sí o No .... ¿Tengo que escribir la declaración si no?

Respuesta

11

Escribir un método de ayuda:

public static class MyExtensions 
{ 
    public static string FormatBool(this HtmlHelper html, bool value) 
    { 
     return html.Encode(value ? "Yes" : "No"); 
    } 
} 

Y utilizar de esta manera:

<%= Html.FormatBool(Model.IsStudent) %> 
6

¿Qué tal un método de extensión en bool:

public static class BoolExtensions { 
    public static string ToYesNo(this bool value) { 
     return value ? "Yes": "No"; 
    } 
} 

uso sería:

Model.isStudent.ToYesNo(); 
2

MVC 4: Este ejemplo muestra en detalle la implementación de plantillas booleanas para una lista desplegable que contiene los valores Sí, No y No establecido, y también maneja valores de bool nulo. Inspirado de Darin Dimitrov y Jorge - Gracias.

Modelo Student.cs

[Display(Name = "Present:")] 
[UIHint("YesNo")] 
public bool? IsPresent { get; set; } 

DisplayTemplates: YesNo.cshtml

@model Nullable<bool> 

@if (Model.HasValue) 
{ 
    if (Model.Value) 
     { <text>Yes</text> } 
    else 
     { <text>No</text> } 
} 
else 
    { <text>Not Set</text> } 

EditorTemplates: YesNo.cshtml

@model Nullable<bool> 

@{ 
    var listItems = new[] 
    { 
     new SelectListItem { Value = "null", Text = "Not Set" }, 
     new SelectListItem { Value = "true", Text = "Yes" }, 
     new SelectListItem { Value = "false", Text = "No" } 
    }; 
} 

@if (ViewData.ModelMetadata.IsNullableValueType) 
{ 
    @Html.DropDownList("", new SelectList(listItems, "Value", "Text", Model)) 
} 
else 
{ 
    @Html.CheckBox("", Model.Value) 
} 

Vista:

<div class="editor-label"> 
     @Html.LabelFor(model => model.IsPresent) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.IsPresent) 
     @Html.ValidationMessageFor(model => model.IsPresent) 
    </div>