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,
que dois-je faire s'il vous plaît?
A votre avis:
@(item.isTrue?"Yes":"No")
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.
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()
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).
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
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 ...