Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中对视图、控制器和模型进行分组_C#_Asp.net Mvc - Fatal编程技术网

C# 在MVC中对视图、控制器和模型进行分组

C# 在MVC中对视图、控制器和模型进行分组,c#,asp.net-mvc,C#,Asp.net Mvc,也许我错了,但我认真地说,我不喜欢MVC应用程序的当前结构,我认为在大型项目中,它会给维护带来麻烦 所以,有没有一种方法可以将相关的控制器、视图、模型分组在一起,比如如果我有gallery模块,我希望所有的控制器、视图、模型都分组在gallery文件夹下。听起来就像你在找的一样。这将使您可以对控制器/视图等进行分组。除非我误解了这个问题?从声音上看,您正在反对MVC的基本原则,即模型、视图和控制器的分离,而不是希望通过使用模块将其分成90度 我不完全确定以任何方式将其拆分为模块会给您带来什么好处

也许我错了,但我认真地说,我不喜欢MVC应用程序的当前结构,我认为在大型项目中,它会给维护带来麻烦


所以,有没有一种方法可以将相关的控制器、视图、模型分组在一起,比如如果我有gallery模块,我希望所有的控制器、视图、模型都分组在gallery文件夹下。

听起来就像你在找的一样。这将使您可以对控制器/视图等进行分组。除非我误解了这个问题?

从声音上看,您正在反对MVC的基本原则,即模型、视图和控制器的分离,而不是希望通过使用模块将其分成90度

我不完全确定以任何方式将其拆分为模块会给您带来什么好处,因为我希望您有一个GalleryController。您可能需要分组的“实体”最多的地方是视图,每个GalleryController操作可能有一个或多个视图,但它们位于自己的文件夹中,该文件夹提供了您想要的功能

最后是模型。很明显,我不知道你的项目,所以我不知道它是如何布置的,但是模型通常不存在用于一个控制器(或者你的情况下的模块)。例如,我有针对用户、公司、车辆等的模型。这些模型是我的数据结构的共享表示,与模块无关,因为用户在查看网页时可能会看到它。我不能将它们拆分为模块,因为关键是它们由整个应用程序共享


所以…实际上,视图可能会变得有点混乱,但它们已经根据其控制器划分到文件夹中。话虽如此,如果这更适合你的需要,你可以将它们移动一点。对于其余部分,没有必要,或者是因为如果您想使用“适当的”MVC(即模块化模型),就不应该这样做,或者是没有必要(即只有一个控制器)。如果您的控制器变得太大,只需为您想要拆分的任何功能创建一个单独的模块。我认为这是您需要的模块化解决方案。

Phil Haack,这与我面临的问题相同,但尚未正确解决。

我找到了一个相对简单的解决方案,使用IIS配置来模拟区域。不需要对现有MVC框架进行扩展

在您的解决方案下为您站点中想要的每个区域创建一个新的MVC项目(例如Root、Blog、Forum、App1、App2)。如果您需要任何公共支持代码或公共模型,请将其放在MVC项目所依赖的单独dll项目中

在IIS中,将站点根目录配置为指向根项目目录。在站点根目录下创建指向每个子区域项目目录的web应用程序

为每个子区域配置路线图时,不要在路线中包含应用程序的名称。IIS似乎为您解决了这个问题。(例如“ShowPost/{postname}”,而不是“/Blog/ShowPost/{postname}”)


好处是,您可以独立于路由系统更改web应用程序的名称,并且每个应用程序都认为自己在运行整个服务器。

很好的提示,但不幸的是,我使用的是共享主机:(