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>
それでも、拡張メソッドでラップすることにフォールバックせずに三項演算子を使用する方法があることを願っています。