2011-04-28 42 views
1

這個問題主要是爲了我自己的好奇心,因爲我知道架構模式可以幫助我們,而不是控制我們,但是我很想知道我構建這個小型寵物項目的方式是否正確實施MVC體系結構。我習慣於在瀏覽器中開發Web應用程序,其中瀏覽器充當一種「主控制器」(您單擊一個鏈接,它將爲我更改視圖,而不必額外編寫任何代碼)。不過,我正在爲這個寵物項目開發一個桌面應用程序,我很好奇如何實現「瀏覽器」,如果你願意的話。我回顧了一些我曾經工作過的Flash項目,並且我注意到他們有處理項目根類中的視圖創作的代碼。這有意義嗎?我的另一個想法是創建一個「ViewPort」類或基本上將該功能從根類中取出,並基本扮演組合視圖/控制器的角色(或者我甚至可以使控制器類與其配合)並且在我需要瀏覽的所有視圖之間改變這個類。但我也不確定這是否合理。我打破MVC?

有沒有一種標準的方式來管理你的MVC視圖?你是否在根窗口中使用了一個控制器,然後顯示你的不同視圖(它們也有自己的控制器?)就像我說的,這更多是爲了我自己的好奇心,所以我很欣賞任何答案。

回答

0

如果我正確理解你的比較,你可以在MVC的根窗口中使用控制器。

因此,如果您有一個共享佈局頁面,您將擁有一個視圖,該視圖將爲使用此_layout.cshtml文件的每個視圖自動加載。

現在,如果你有,例如一個客戶訂單窗口,你可以擁有這一切 1. layout.cshtml文件爲您的網站的整體共享的外觀和感覺 2.主視圖中說/ mysite的/ CustomerOrder/Index/656 - 由您的CustomerController.cs文件創建的內容,名爲Index的方法。 3.在您的/Views/CustomerOrder/Index.cshtml視圖中,您可以取消顯示其他視圖 RenderAction(「Index」,「CustomerOrderHistory」,new {[email protected]} 通過控制器命名CustomerOrderHistoryController.cs並尋找方法名爲Index 或 的RenderPartial(「CustomerHistory」) ,直接到一個視圖和複製,並將當前視圖上的模型吧。

因此,要回答你的問題,你可以有其他視圖的主視圖..但它取決於你是否想這樣做 - 你不必。