[解決済み] razor で三項演算子を使用するには (特に HTML 属性について)?
2022-03-21 13:07:26
質問
WebForms のビューエンジンでは、特に HTML 属性内の非常に単純な条件文に三項演算子をよく使用します。例えば
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
上記のコードでは
<a>
タグのクラスは
auth
または
anon
は、ユーザーが認証されているかどうかによって異なります。
Razor のビューエンジンで同等の構文とは何ですか?RazorはHTMLタグにコードとマークアップのジャンプのタイミングを"know"要求するので、私は現在次のように行き詰っています。
@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>
それでも、三項演算子を拡張メソッドでラップすることなく使用する方法があることを期待しています。
解決方法は?
を使用する必要があります。
@()
式の構文です。
<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>
関連
-
[解決済み] Razor View Page で名前空間をインポートするにはどうしたらいいですか?
-
[解決済み] razor で三項演算子を使用するには (特に HTML 属性について)?
-
[解決済み] Razor でローカル変数を宣言するには?
-
[解決済み】ASP.NET MVC 3 razor ViewStart ファイルで異なるレイアウトを指定するには?
-
[解決済み] razor MVC 4 で条件付きの 2 番目の css クラスを追加する方法
-
[解決済み] _viewstart.cshtml と部分的な Razor のビューを使用する正しい方法?
-
[解決済み] MVC3 Razor。コードブロック内のhtmlを表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン