ASP.NET MVC - 放置控制器和放大器相关视图在同一个文件夹中?

时间:2009-12-22 08:38:22

标签: asp.net-mvc model-view-controller architecture

我们目前正在使用MVC应用程序的默认文件夹结构,并且想知道是否可以将Controller及其相关视图放入同一文件夹中。

例如,我们当前结构的一个子集是:

 Model folder
   OrderViewModel.cs
 Views folder
   OrderView.aspx
   OrderGrid.ascx
   OrderHeader.ascx
 Controllers folder
   OrderController.cs

所需:

 Order folder
   OrderController.cs       
   OrderGrid.ascx
   OrderHeader.ascx
   OrderViewModel.cs
   OrderView.aspx

我们有数百个操作/视图,目前它们被分组为太少的控制器。这部分是因为在视图及其相关类之间来回切换时,在项目中导航变得很麻烦。上述解决方案将允许专注于一个控制器动作的开发人员使所有这些操作都易于访问。

我猜区域也可以帮助解决这个问题,但是我们必须制作~100个区域(每组密切相关的屏幕一个)才能使我的团队的POV变得有用。

2 个答案:

答案 0 :(得分:6)

默认控制器工厂使用反射来查找从Controller派生的所有类,因此无论您将它们放在哪个文件夹中,只要它们是公共的并派生自Controller它就可以工作。但恕我直言将视图和控制器混合到同一个文件夹中并不是一个好主意。如果是组织控制器的问题,为什么不在Controllers文件夹中创建子文件夹?

答案 1 :(得分:1)

我不确定偏离惯例会是一个好主意,因为人们可能习惯于标准文件夹布局 - 但我确实感到痛苦。

如果Visual Studio在IntelliJ IDEA中找到了更多功能,那么文件之间的导航就不会那么痛苦。

事实上,随着更多文件被添加到项目中,几乎任何文件夹结构都会随着时间的推移而降级,而更好的工具通常是解决问题的更有效方法。

公平地说,看起来VS2010已经开始采用一些IntelliJ想法了,所以事情可能会有所改善 - 但是在微软赶上之前还有很长的路要走。

编辑:我忘了提到有一个plugin为Visual Studio提供了更多功能 - 几乎可以将它提升到与IntelliJ相同的水平