2016-11-14 3 views
1

ich ASP.Net MVC eine alte Website bin Migrieren 5, hatte ich einen Link wie folgt:: Zustand in Razor C#

<a href="/contact"><%=User.Identity.IsAuthenticated?"Support":"Contact Us"%></a> 

ich mehrere Dinge gegoogelt und versucht, und ich endete mit dem Follow-up Code:

<a href="/contact">@if{User.Identity.IsAuthenticated){@Html.Raw("Support");}else{@HtmlRaw("Contact Us");}</a> 

dies scheint aber nicht die Lösung zu sein, da es viel komplizierter als die erste ist, während Razor für die Einfachheit

Antwort

4

Gerade Einwickeln Ihre ternären Ausdruck in @() arbeiten verwendet werden.

<a href="/contact">@(User.Identity.IsAuthenticated ? "Support" : "Contact Us")</a> 

Edit:

Wenn Sie HTML-Elemente benötigen, können Sie Ihre ternären Ausdruck in @Html.Raw() wickeln.

heißt

@Html.Raw(User.Identity.IsAuthenticated ? "<div>Support</div>" : "Contact Us") 
+1

Da es einiger HTML-Code in meinen Saiten (für Ikonen der Schrift super), die ich sah, dass ich die 'Hml.Raw verwenden()', aber wenn es keine html drin. das funktioniert perfekt. Danke vielmals. –

+0

@AshkanMobayenKhiabani Ja das ist richtig. Obwohl, wenn Sie Html-Elemente haben, ich glaube, Sie können einfach '@ Html.Raw (User.Identity.IsAuthenticated?"

":" Kontakt ")', so dass es lesbarer (siehe [diese Antwort] (http://stackoverflow.com/a/8145877/5743929)). –

+0

Ja! das ist noch besser. Vielen Dank –

1
erstellt

Operator zu beziehen, werden diegenannt wird 0, wird es verwendet Inline haben, wenn Aussagen

In Ihrem Beispiel kann es wie so

<a href="/contact">@(User.Identity.IsAuthenticated ? "Support" : "Contact Us")</a> 
0

Ich denke, das ein lesbar mehr ist.

@if(User.Identity.IsAuthenticated){ 
    <a href="/contact">Support</a> 
} 
else{ 
    <a href="/contact">Contact Us</a> 
}