Como usar o operador ternário no razor (especificamente em atributos HTML)?
Com o mecanismo de exibição WebForms, usarei normalmente o operador ternário para condicionais muito simples, especialmente dentro de atributos HTML. Por exemplo:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
O código acima dará a<a>
marcar uma classe deauth
ouanon
dependendo se o usuário está autenticado.
Qual é a sintaxe equivalente ao mecanismo de exibição Razor? Como o Razor exige que as tags HTML "saibam" quando entrar e sair do código e da marcação, atualmente estou preso ao seguinte:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Isto é, para dizer o mínimo,terrivel.
Eu adoraria fazer algogostar isso, mas estou lutando para entender como no Razor:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
Atualizar:
Enquanto isso, eu criei este HtmlHelper:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
que pode ser chamado assim pelo Razor:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Ainda assim, espero que haja uma maneira de usar o operador ternário sem voltar a envolvê-lo em um método de extensão.