我目前正在研究一个半大型MVC 2项目,我们拥有的关联视图和视图模型的控制器数量正在变得非常大。为了尝试并提供一些分离,我一直在研究使用MVC 2的区域特征并相应地重构项目。在控制器的每个区域设置多个区域,继承自一个基础控制器 - MVC
我面对的问题之一是我们对控制器有一个继承层次,以便共享我们在具体控制器中使用的功能和属性,然后公开我们希望处理的必要操作。
本质上讲,我们现在有一个设置像这样在我们的主控制器文件夹:
Controller (MVC)
+-- BaseController (Abstract)
+-- BaseWorkController (Abstract)
+-- BaseWorkAController (Abstract)
+-- ... a number of controllers exposing actions
+-- BaseWorkBControllers (Abstract)
+-- ... a number of controllers exposing actions
我每个工作控制器思维创造地区即
- 区/ WorkA
- 区/ WorkB
每个区域都有其关联的视图和视图模型甚至模型。
但是,我似乎面临的问题是我在哪里放置BaseWorkController。可以将它保留在主控制器文件夹中,并且区域控制器只包含对该控制器的引用。另外,不同区域的代码可能需要访问不同的模型,甚至需要为某些功能创建一些属性。
这个设置看起来像是可以接受的区域使用。从我读过的东西看来,这些东西似乎有助于我正在寻找的关注点和功能。但是,如果这是对功能的完全错误使用,我不想投资这么做。
控制器代码是否可以使用来自其他区域或主要核心控制器/模型/视图文件夹的功能。
我承认树很深。许多功能是继承控制器根据需要使用的附加方法,通常是受保护的方法。他们不是特别大,特别是BaseWorkAControllers等我不确定我们如何重构这个,但我可能能够摆脱这个水平,所以我会看看建议的模式。谢谢。 – dreza