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>
それでも、拡張メソッドでラップせずに三項演算子を使用する方法があることを期待しています。
ベストアンサー1
次の式構文を使用できるはずです@()
。
<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>