477 Stimmen

Wie verwendet man den ternären Operator in razor (speziell für HTML-Attribute)?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X