Благодаря движку представления WebForms я обычно использую троичный оператор для очень простых условных выражений, особенно в атрибутах HTML.Например:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Приведенный выше код даст тегу <a>
класс auth
или anon
в зависимости от того, аутентифицирован ли пользователь.
Что эквивалентносинтаксис с движком Razor?Поскольку Razor требует HTML-теги, чтобы «знать», когда нужно вставлять и выходить из кода и разметки, в настоящее время я застрял в следующем:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Это, мягко говоря, ужасно.
Я бы хотел сделать что-нибудь , как это, но я изо всех сил пытаюсь понять, как в Razor:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
Обновление:
Тем временем я создал этот HtmlHelper:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
, который можно назвать так из Razor:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
StillЯ надеюсь, что есть способ использовать троичный оператор, не прибегая к его обертыванию в методе расширения.