簡體   English   中英

在MVC中對視圖,控制器,模型進行分組

[英]Grouping Views, Controllers, Models in MVC

也許我錯了,但我真的很不喜歡MVC應用程序的當前結構,而且我認為在大型項目中,這將給維護帶來麻煩。

所以有一種方法可以將相關的Controllers,Views,Models組合在一起,就像我有Gallery Module一樣,我希望將其所有Controllers,Views,Models歸類到Gallery Folder下。

區域聽起來像您想要的。 這將使您對控制器/視圖/等進行分組。 除非我誤解了這個問題?

Phil Haack 在這里討論了這個問題 ,這是我已經遇到並且尚未正確克服的同樣問題。

從它的聲音來看,您正在違背MVC的基本原理,那就是將Model,View和Controller分離,而不是希望通過使用模塊以90度拆分。

我不確定要以任何方式將其拆分為模塊會帶來什么好處,因為我希望您擁有一個GalleryController。 您可能需要對“實體”進行分組最多的地方是視圖,每個GalleryController動作可能包含一個或多個視圖,但是它們位於自己的文件夾中,無論如何它們提供了您正在尋找的功能。

最后是模型。 顯然,我不知道您的項目,所以不知道它的布局,但是通常不存在使用一個控制器(或您的模塊)使用的模型。 例如-我有用於用戶,公司,車輛等的模型。這些模型是我的數據結構的共享表示,與模塊無關,因為用戶可以在網頁上看到它。 我不能將它們分成模塊,因為重點是它們被整個應用程序共享。

所以...實際上,視圖可能會有些混亂,但是它們已經根據其Controller拆分為多個文件夾。 話雖如此,如果更適合您的需求,您可以稍微調整一下它們。 對於其余的部分,則沒有必要,要么是因為您不想使用“適當的” MVC(即模塊化模型),要么是沒有必要(即僅一個Controller)。 而且,如果您的控制器太大,則可以為要拆分的所有功能創建一個單獨的模塊。 我認為這與您需要獲得的模塊一樣。

我找到了一個相對簡單的解決方案,該解決方案使用IIS配置來模擬區域。 不需要擴展現有的MVC框架。

在您的解決方案下,為站點中所需的每個區域(例如Root,Blog,Forum,App1,App2)創建一個新的MVC項目。 如果需要任何通用的支持代碼或通用的模型,請將其放在MVC項目所依賴的單獨的dll項目中。

在IIS中,將站點根目錄配置為指向根項目目錄。 在站點根目錄下創建指向每個子區域項目目錄的Web應用程序。

在為每個子區域配置路線圖時,請勿在路線中包括應用程序的名稱。 IIS似乎為您解決了這一問題。 (例如,“ ShowPost / {postname}”,而不是“ / Blog / ShowPost / {postname}””)

好處是您可以更改與路由系統無關的Web應用程序的名稱,並且每個應用程序都認為它與整個服務器一起運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM