对于 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>
不过,我希望有一种方法可以使用三元运算符,而不会退回到将其包装在扩展方法中。