WebForms görünüm motoruyla, genellikle HTML öznitelikleri dahilinde, çok basit şartlar için üçlü işleç kullanacağım. Örneğin:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Yukarıdaki kod verecektir <a>
etiketini sınıfını auth
veya anon
kullanıcı kimlik doğrulaması olup olmamasına bağlı olarak.
Razor view motoruyla eşdeğer sözdizimi nedir? Razor, HTML etiketlerinin kod ve biçimlendirmeye ne zaman girip çıkacağını bilmek için HTML etiketlerine ihtiyaç duyduğundan, şu anda aşağıdakilere takılı kaldım:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Bu, hafifçe söylemek gerekirse, korkunç .
Böyle bir şey yapmak isterdim , ama Razor'da nasıl olduğunu anlamakta zorlanıyorum:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
Güncelleme:
Bu arada, bu HtmlHelper'ı oluşturdum:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
Razor'dan şöyle denilebilir:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Yine de, üçlü bir operatörü bir uzatma yöntemiyle sarmalamaya geri dönmeden kullanmanın bir yolu olduğunu umuyorum.
IHtmlString
yöntemiylenew HtmlString("Some stuff here");
vs ... yardımcıları için