[解決済み] razor MVC 4 で条件付きの 2 番目の css クラスを追加する方法
質問
マイクロソフトは、いくつかの html属性の自動的なレンダリング しかし、razor の条件式に基づいて、ある要素に 2 つ目の css クラスをレンダリングする方法を見つけるのに、かなり時間がかかりました。今回はそれを紹介したいと思います。
モデルプロパティ @Model.Details に基づいて、リストアイテムを表示または非表示にしたいと思います。詳細がある場合はdivを表示し、そうでない場合は非表示にします。jQueryを使えば、それぞれshowとhideというクラスを追加するだけでいい。他にも、"details"というクラスも追加しておきたい。というわけで、マークアップは以下のようになる。
<div class="details show">[Details]</div>
または
<div class="details hide">[Details]</div>
以下に、失敗した試みをいくつか示します(詳細がないと仮定した結果のマークアップ)。
これです。
<div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>
,
はこれをレンダリングします。
<div class="details" hide="">
.
これは
<div @(@Model.Details.Count > 0 ? "class=\"details show\"" : "class=\"details hide\"")>
.
はこれをレンダリングします。
<div class=""details" hide"="">
.
これです。
<div @(@Model.Details.Count > 0 ? "class='details show'" : "class='details hide'")>
はこれをレンダリングします。
<div class="'details" hide'="">
.
いずれも正しいマークアップではありません。
どのように解決するのですか?
私は、ビューに有効なロジックが存在する可能性があると信じています。しかし、この種のものについては、私は@BigMikeと同意見です、それはモデル上に配置する方が良いです。とはいえ、この問題は3つの方法で解決することができます。
あなたの答え(これがうまくいくと仮定して、私はこれを試していません)。
<div class="details @(@Model.Details.Count > 0 ? "show" : "hide")">
第二の選択肢
@if (Model.Details.Count > 0) {
<div class="details show">
}
else {
<div class="details hide">
}
第3の選択肢
<div class="@("details " + (Model.Details.Count>0 ? "show" : "hide"))">
関連
-
[解決済み] MVC-3から4へ変換されたアプリでSystem.Web.Optimizationへの参照を追加する方法
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] razor で三項演算子を使用するには (特に HTML 属性について)?
-
[解決済み] razor MVC 4 で条件付きの 2 番目の css クラスを追加する方法
-
[解決済み] _viewstart.cshtml と部分的な Razor のビューを使用する正しい方法?
最新
-
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 実装 サイバーパンク風ボタン