這是一個架構哲學問題:)從多個控制器的動作輸出構成頁面
您想要創建非常非常簡單的基於模塊化MVC的「CMS」的圖像。事實上,你想要它做的唯一的事情是,你可以指定(XML爲例)每個頁面的結構是這樣的(pseudolang):
Use layout: Subpage.cshtml For section "Header" (placeholder in layout) render controller "Header", action "SubpageHeader" For section "LeftCol" render controller "Menu" action "MainMenu" For section "Content" render controller "Articles" action "List" etc.
那麼,什麼是優雅和推薦的方式去做這個?我能想到的2種方式現在:
選項1:
定義自己的路線,這將捕獲所需的網址,並會爲這個請求創建自己的MyMvcHandler。在這個處理程序中,處理不會實例化控制器(沒有一個「主」),而是會讀取「頁面結構配置」(上面的示例),實例化所有需要的控制器..但我不確定,在做什麼這一點 - 如何收集行動的結果,並將其放入佈局?
選項2: 讓默認的MvcHandler存活,並且總是用一些默認操作調用某個「MasterController」,這將只返回View(layoutPage);在佈局頁面中,實現「頁面部分」(內容的佔位符)作爲我自己的幫助器方法,類似於Html.RenderAction - 只能定製爲查看「頁面結構配置」並呈現正確的控制器+操作。但這樣,MasterController似乎對我來說毫無用處,有什麼辦法擺脫他?
你能想出更好的辦法嗎?你能看到一些基本的&這些方法的任何損失?你能指點我一些關於這個問題的好資源嗎? (我找不到任何)。
非常感謝MVC忍者)
假設選項2,您如何計劃從cms解析用戶編寫的語言?你不需要「MasterController」來確保它是可測試的嗎?此外,您的部分是預定義的還是動態的?你可以使用你的MasterController解析出用戶編寫的xml,並用必要的組件填充視圖包?使用依賴注入,你應該能夠實現非常相似的東西。 – parKing 2012-08-28 12:49:59