[解決済み] Razor ネストレイアウトとカスケードセクション
質問
Razorをビューエンジンとして使用したMVC3サイトを持っています。 私は私のサイトがスキン可能であることを望みます。 可能なスキンのほとんどは、共有マスターレイアウトから派生することができるほど十分に類似しています。
したがって、私はこのデザインを検討しています。
しかし、私は、このような場合にも
RenderSection
を下のレイヤーで呼び出したい。
_Common.cshtml
で、上のレイヤーで定義されたセクションをレンダリングさせる。
Detail.cshtml
. これはうまくいきません。
RenderSection
は、明らかに次のレイヤーで定義されているセクションのみをレンダリングします。
もちろん、各スキンで各セクションを定義することはできます。 例えば、もし
_Common
を呼び出す必要がある場合
RenderSection("hd")
で定義されたセクションに対して
Detail
で定義されたセクションのために、私はただこれをそれぞれの
_Skin
に配置するだけで、うまくいきます。
@section hd {
@RenderSection("hd")
}
この結果、コードが重複してしまい(各スキンに同じセクションが必要なため)、全体的に雑然とした感じがします。私はまだRazorの初心者ですが、何か明らかなことを見逃しているような気がします。
デバッグするとき、私は WebViewPage.SectionWritersStack で定義されたセクションの完全なリストを見ることができます。 もし私が RenderSection に、あきらめる前にリスト全体を調べるように言うことができれば、必要なセクションを見つけることができるでしょう。 残念なことに、SectionWritersStackは非公開です。
代わりに、もし私がレイアウトページの階層にアクセスし、それぞれの異なるコンテキストで RenderSection の実行を試みることができれば、私が必要とするセクションを見つけることができます。おそらく何かを見逃しているのでしょうが、これを行う方法は見当たりません。
私がすでに概説した方法以外に、この目標を達成する方法はあるでしょうか。
どのように解決するのですか?
これは実際、パブリックAPIを使用して今日可能ではありません(セクションの再定義のアプローチを使用する以外には)。プライベート リフレクションを使用すれば運よくできるかもしれませんが、もちろんそれは壊れやすいアプローチです。私たちは、Razorの次のバージョンでこのシナリオをより簡単にすることを検討します。
とりあえず、このテーマについて書いたブログ記事をいくつか紹介します。
関連
-
[解決済み] Html.DisplayForの構文は何のためにあるのですか?
-
[解決済み] Razor View Page で名前空間をインポートするにはどうしたらいいですか?
-
[解決済み] razor viewエンジンでの@文字のエスケープ
-
[解決済み] razor で三項演算子を使用するには (特に HTML 属性について)?
-
[解決済み】部分ビューから特定のセクションにコンテンツを注入する ASP.NET MVC 3 with Razor View Engine
-
[解決済み】ASP.NET MVC 3 razor ViewStart ファイルで異なるレイアウトを指定するには?
-
[解決済み] ビュー内の現在のコントローラを取得する
-
[解決済み] customerrors = "On "の場合、アプリケーションエラーが発生しない。
-
[解決済み] asp.net mvcのMin/Max値バリデータ
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Html.DisplayForの構文は何のためにあるのですか?
-
[解決済み] 年、月、日のパラメーターは、表現できない DateTime Exception を記述します。
-
[解決済み】部分ビューから特定のセクションにコンテンツを注入する ASP.NET MVC 3 with Razor View Engine
-
[解決済み] Razor View-MVC3 ASP.NETでWeb.configからキー値にアクセスする。
-
[解決済み] Razor のページに @using 宣言の代わりに余分な名前空間を追加する方法は?
-
[解決済み] asp.net MVC3 のカスタムエラーページ
-
[解決済み] ビュー内の現在のコントローラを取得する
-
[解決済み] MVC Razor のダイナミックモデルで、'object' に 'PropertyName' の定義がない。
-
[解決済み] jquery.validate.unobtrusive が動的注入された要素で機能しない
-
[解決済み] IIS8 Win8とrunAllManagedModulesForAllRequests="true"