【发布时间】:2011-06-19 04:01:06
【问题描述】:
我目前正在处理一个半大型 MVC 2 项目,我们拥有的具有关联视图和视图模型的控制器数量变得非常大。为了尝试提供一些分离,我一直在研究使用 MVC 2 的区域功能并相应地重构项目。
我面临的一个问题是我们的控制器有一个继承层次结构,以便共享我们在具体控制器中使用的功能和属性,然后公开我们希望处理的必要操作。
基本上我们目前在我们的主控制器文件夹中有这样的设置:
Controller (MVC)
+-- BaseController (Abstract)
+-- BaseWorkController (Abstract)
+-- BaseWorkAController (Abstract)
+-- ... a number of controllers exposing actions
+-- BaseWorkBControllers (Abstract)
+-- ... a number of controllers exposing actions
我正在考虑为每个工作控制器创建区域,即
- 区域/工作A
- 区域/工作B
每个区域都有其关联的视图和视图模型甚至模型。
但是我似乎面临的问题是我应该在哪里放置 BaseWorkController。是否可以将其保留在主控制器文件夹中,并且区域控制器只包含对该控制器的引用。此外,不同领域的代码可能需要访问不同的模型,甚至是我们为某些功能创建的某些属性。
这种设置看起来是可以接受的区域使用吗?从我所阅读的内容来看,区域似乎有助于分离我正在寻找的关注点和功能。但是,如果这是对功能的完全错误使用,我不想投资这样做?
控制器代码使用来自其他区域或主要核心控制器/模型/视图文件夹的功能是否可以接受。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-2