Csharp/C#教程:在MVC中对视图,控制器,模型进行分组分享


在MVC中对视图,控制器,模型进行分组

也许我错了,但我认真,我不喜欢MVC应用程序的当前结构,我认为在大项目上它将导致维护麻烦。

所以有没有办法将相关的控制器,视图,模型组合在一起,就像我有画廊模块我想要所有的控制器,视图,模型在图库文件夹下分组。

区域听起来像你在寻找。 这将允许您对控制器/视图/等进行分组。 除非我误解了这个问题?

Phil Haack 在这里讨论了这个问题 ,这是我面临的同样问题,并且尚未正确克服。

从它的声音来看,你正在反对MVC的基本原理,即模型,视图和控制器的分离,而不是你希望通过使用模块在90度分割。

我不完全确定将它分成模块会有什么好处,因为我希望你有一个GalleryController。 您可能需要分组的“实体”最多的是视图,可能是每个GalleryController操作的一个或多个视图,但它们位于自己的文件夹中,无论如何都会提供您正在寻找的function。

最后还有模型。 显然我不知道你的项目,所以我不知道它是如何布局的,但模型通常不存在使用一个Controller(或你的情况下的模块)。 例如 – 我有用户,公司,车辆等模型等。这些模型是我的数据结构的共享表示,与模块无关,因为用户可能会看到它在网页上看。 我无法将它们拆分为模块,因为重点是它们由整个应用程序共享。

所以…实际上它是可以变得有点混乱的视图,但是它们已经基于它们的控制器分成了文件夹。 话虽如此,如果能更好地满足您的需求,您可以将它们移动一下。 对于其余部分,没有必要,因为如果你想使用“正确的”MVC(即模块化模型)或者不需要(即只有一个控制器),你就不应该这样做。 如果您的控制器太大,只需为您要拆分的任何function创建一个单独的模块。 我认为这是模块化的,你应该得到它。

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

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

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

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

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

上述就是C#学习教程:在MVC中对视图,控制器,模型进行分组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/959684.html

(0)
上一篇 2021年11月24日
下一篇 2021年11月24日

精彩推荐