これは一種の建築哲学の質問です:)
非常にシンプルなモジュラーMVCベースの「CMS」を作成したい画像。実際、実行したいのは、次のようなもの(pseudolang)を使用してすべてのページの構造(たとえばXML)を指定できることだけです。
レイアウトを使用:Subpage.cshtml セクション「Header」(レイアウトのプレースホルダー)レンダリングコントローラー「Header」の場合、アクション「SubpageHeader」 セクション「LeftCol」のレンダリングコントローラ「メニュー」アクション「メインメニュー」 セクション「コンテンツ」のレンダリングコントローラ「記事」アクション「リスト」 等
それで、これを行うためのエレガントで推奨される方法は何ですか?私は今2つの方法を考えることができます:
オプション1:
独自のルートを定義します。これにより、目的のURLをキャッチし、このリクエストに対して独自のMyMvcHandlerを作成します。このハンドラーでは、処理はコントローラーをインスタンス化しません(「メイン」は1つではありません)。代わりに、「ページ構造構成」(上記の例)を読み取り、必要なすべてのコントローラーをインスタンス化します。この点-アクションの結果を収集してレイアウトに配置する方法は?
オプション2:デフォルトのMvcHandlerを有効にし、常にデフォルトのアクションで「MasterController」を呼び出します。これにより、View(layoutPage)のみが返されます。レイアウトページで、Html.RenderActionと同様に、独自のヘルパーメソッドとして「ページセクション」(コンテンツのプレースホルダー)を実装します。これは、「ページ構造の構成」を調べて適切なコントローラー+アクションをレンダリングするようにカスタマイズされているだけです。しかし、このように、MasterControllerは私にはパイプラインで本当に役に立たないように見えます、彼を取り除く方法はありますか?
もっと良い方法を考えられますか?このアプローチのいずれかの基本的な浮き沈みを見ることができますか?このテーマに関するいくつかの優れたリソースを教えていただけますか?(私は何も見つかりません)。
MVC忍者に感謝します;)