web-dev-qa-db-fra.com

Modèle MVC Affichage booléen oui ou non

j'ai un champ booléen dans mon modèle dans MVC 4 entité cadre 4.5

je veux afficher le champ à mes yeux

j'utilise cet appel

@item.isTrue

mais je suis devenu vrai ou faux,

je veux obtenir oui quand vrai et non quand faux 

que dois-je faire s'il vous plaît?

26
Marco Dinatsoli

A votre avis:

@(item.isTrue?"Yes":"No")
58
Michael Dunlap

Vous pouvez utiliser une méthode d’extension d’aide HTML personnalisée comme celle-ci:

@Html.YesNo(item.IsTrue)

Voici le code pour ceci:

public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo)
{
    var text = yesNo ? "Yes" : "No";
    return new MvcHtmlString(text);
}

De cette façon, vous pouvez le réutiliser sur tout le site avec une seule ligne de code Razor.

23
hutchonoid

Pour développer la réponse de DigitalD, vous pouvez envisager de l'intégrer dans une méthode d'extension:

public static string ToFriendlyString(this Boolean b)
{
    return b ? "Yes" : "No";
}

Ensuite, vous pouvez l'utiliser partout:

@item.IsTrue.ToFriendlyString()
4
Ant P

C'est un peu tard, mais ...

Une méthode utile manquée par d’autres réponses est la méthode Custom DisplayTemplate . En mettant ce Code:

@model bool
<p>@{Model ? "Yes" : "No"}</p>

Dans une vue partielle (peut-être YesNo.cshtml) dans le dossier Modèles d'affichage (/Views/Shared/DisplayTemplates). Ensuite, à votre avis, utilisez cette ligne:

@Html.Display(item.isTrue,"YesNo")

où "OuiNon" est ce que vous avez nommé votre vue partielle, moins l'extension .cshtml .

En ajoutant la deuxième chaîne (la templateName), vous indiquez à DisplayExtensions d'afficher le booléen avec votre modèle personnalisé, plutôt que la méthode par défaut (une case à cocher).

Cette méthode n’est peut-être pas la plus simple pour cette situation, mais elle est pratique dans des situations plus complexes (comme un calendrier personnalisé pour la sélection de dates).

2
Lucas Niewohner

Dans votre modèle, écrivez quelque chose comme ceci:

public Nullable<bool> Active
{
    get;
    set;
}
public string ISActive
{
    get
    {
        return (bool)this.Active ? "Yes" : "NO";
    }
}

Active est une propriété booléenne, nous créons ISActive propriété pour lire sa valeur et afficher le message approprié à l'utilisateur 

1
Milad D Zand

Si vous êtes pressé ou utilisez un entier au lieu de bit. (Je le fais au cas où vous auriez une troisième option plus tard et que votre yes/no deviendrait un yes, no, octopus, comme le mien semble toujours le faire, voici le moyen simple et rapide de vous salir ... Déclarez votre variable en haut du rasoir vue:

@model MyModel
@using My.Models;
@{
    ViewBag.Title = "Index";
    ViewBag.ReturnUrl = "";
    string Active = ""; //This will hold your "Yes" or "No"
 }

Au fur et à mesure que vous parcourez vos éléments ... Le code suivant définira votre variable chaîne Active sur "Oui" ou "Non", puis vous l'afficherez telle quelle sur la page (sans balise @Html.DisplayFor(...)

@{if (item.Active == 0){Active = "No";}else{Active = "Yes";}}
@Active

Si vous ne le savez pas déjà, entourez l'intégralité de la déclaration "si" avec @{} simplifie la vie - aucun @ n'est nécessaire entre crochets ... 

0
Dan B