2010-02-03 4 views
8

Quelle est la meilleure façon d'imprimer « Oui » ou « Non » en fonction d'une valeuravec C# et asp.net bool sur mvc

À mon avis, je veux imprimer

Model.isStudent

et je ne veux pas Vrai ou faux, je veux Oui ou Non .... dois-je écrire sinon else déclaration?

Répondre

11

Ecrire une méthode d'assistance:

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

Et l'utiliser comme ceci:

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

Que diriez-vous d'une méthode d'extension sur bool:

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

utilisation serait:

Model.isStudent.ToYesNo(); 
2

MVC 4: Cet exemple montre en détail l'implémentation de gabarits booléens pour une liste déroulante qui contient des valeurs Oui, Non et Non défini et gère également des valeurs booléennes nulles. Inspiré de Darin Dimitrov et Jorge - Merci.

Modèle 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) 
} 

Vue:

<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>