Mit der WebForms-View-Engine verwende ich den ternären Operator häufig für sehr einfache Bedingungen, insbesondere innerhalb von HTML-Attributen. Zum Beispiel:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Der obige Code gibt die <a>
Tag eine Klasse von auth
o anon
je nachdem, ob der Benutzer authentifiziert ist.
Wie lautet die entsprechende Syntax für die Razor-View-Engine? Da Razor HTML-Tags benötigt, um zu "wissen", wann man in den Code und das Markup hinein- und herausspringen muss, habe ich derzeit folgendes Problem:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Das ist, um es milde auszudrücken, schrecklich .
Ich würde gerne etwas tun wie dies, aber ich habe Schwierigkeiten zu verstehen, wie in Razor:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
--
Aktualisierung:
In der Zwischenzeit habe ich diesen HtmlHelper erstellt:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
die von Razor wie folgt aufgerufen werden kann:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Dennoch hoffe ich, dass es eine Möglichkeit gibt, den ternären Operator zu verwenden, ohne ihn in eine Erweiterungsmethode einzuschließen.