2009-12-22 119 views
2

我們目前正在爲我們的MVC應用程序使用默認的文件夾結構,並想知道是否可以將控制器及其相關視圖放入同一個文件夾。ASP.NET MVC - 將控制器和相關視圖放在同一個文件夾中?

例如,我們目前的結構的一個子集是:

Model folder 
    OrderViewModel.cs 
Views folder 
    OrderView.aspx 
    OrderGrid.ascx 
    OrderHeader.ascx 
Controllers folder 
    OrderController.cs 

期望:

Order folder 
    OrderController.cs  
    OrderGrid.ascx 
    OrderHeader.ascx 
    OrderViewModel.cs 
    OrderView.aspx 

我們有數百個動作/意見,他們目前正在分成太少控制器。部分原因是當在視圖和相關類之間來回切換時,在項目周圍進行導航變得非常痛苦。上述解決方案將允許開發人員專注於一個控制器操作,以使所有這些操作都可以輕鬆訪問。

我想區域也可以提供幫助,但是我們必須製作大約100個區域(每組一個密切相關的屏幕),以便從我的團隊的POV中獲得有用的信息。

回答

6

默認控制器工廠使用反射來查找所有從Controller派生的類,因此無論您在哪個文件夾中放置它們,只要它們是公共的並從Controller派生出來就可以工作。但恕我直言混合視圖和控制器到同一個文件夾不是一個好主意。如果是組織控制器的問題,爲什麼不在Controllers文件夾中創建子文件夾?

+7

感謝。問題是我們的開發人員在Views文件夾和Controllers文件夾(以及其他文件夾,比如ViewModels和Mappers,我將以任何方式進行整合)之間來來回回地討厭。他們希望將他們放在一個地方,以便他們可以快速切換與某個動作相關的所有內容。他們來自webforms背景,所以我可以在一定程度上理解。他們喜歡ASP.NET MVC,但被他們感覺無法立即找到事物所困擾。 – 2009-12-22 08:49:25

+1

在Action Method和它的視圖之間有一條捷徑。這可以使查找更容易。如果您右鍵單擊某個操作方法並選擇「轉到視圖」。您可以右鍵單擊視圖並選擇「轉到控制器」,它會將您帶到該視圖的默認控制器。鍵盤快捷鍵ctrl&M然後ctrl&G也一樣。 – 2009-12-22 09:27:57

+1

理想的提示,理查德 - 這將緩解一些痛苦(至少在我說服老闆花費一些錢在Resharper許可證上) – belugabob 2009-12-22 13:02:45

1

我不確定偏離常規是一個好主意,因爲人們可能習慣於標準文件夾佈局 - 但我確實感到你的痛苦。

如果Visual Studio具有IntelliJ IDEA中的更多功能,文件之間的導航將不那麼痛苦。

事實上,隨着時間的推移,幾乎任何文件夾結構都會降級,因爲將越來越多的文件添加到項目中,而更好的工具通常是更有效的解決方案。爲了公平起見,VS2010似乎已經開始採用一些IntelliJ的想法,所以事情可能會有所改善 - 但在微軟趕上之前還有很長的路要走。

編輯:我忘了提,有一個plugin,提供大量的Visual Studio更多的功能 - 幾乎使之達到同一水平的IntelliJ

相關問題