Avec le moteur de vue WebForms, je vais généralement utiliser l'opérateur ternaire pour des conditions très simples, en particulier dans les attributs HTML. Par exemple:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Le code ci-dessus donnera à la <a>
balise une classe auth
ou anon
selon que l'utilisateur est authentifié.
Quelle est la syntaxe équivalente avec le moteur de visualisation Razor? Parce que Razor nécessite des balises HTML pour "savoir" quand sauter dans et hors du code et du balisage, je suis actuellement bloqué avec ce qui suit:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
C'est, pour le moins, terrible .
J'aimerais faire quelque chose comme ça, mais j'ai du mal à comprendre comment dans Razor:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
Mise à jour:
En attendant, j'ai créé ce HtmlHelper:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
qui peut être appelé ainsi de Razor:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Pourtant, j'espère qu'il existe un moyen d'utiliser l'opérateur ternaire sans revenir à l'envelopper dans une méthode d'extension.
IHtmlString
avec la méthodenew HtmlString("Some stuff here");
pour les aides, etc ...