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

Bee*_*eep 4 architecture model-view-controller asp.net-mvc

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

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

 Model folder
   OrderViewModel.cs
 Views folder
   OrderView.aspx
   OrderGrid.ascx
   OrderHeader.ascx
 Controllers folder
   OrderController.cs
Run Code Online (Sandbox Code Playgroud)

期望:

 Order folder
   OrderController.cs       
   OrderGrid.ascx
   OrderHeader.ascx
   OrderViewModel.cs
   OrderView.aspx
Run Code Online (Sandbox Code Playgroud)

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

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

Dar*_*rov 6

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

  • 谢谢.问题是我们的开发人员在Views文件夹和Controllers文件夹(以及其他文件夹,如ViewModels和Mappers,我将要以任何方式合并)之间来回烦恼.他们希望将它们放在一个地方,以便他们可以快速切换与动作相关的所有内容.它们来自webforms背景,所以我可以在某种程度上理解.他们喜欢ASP.NET MVC,但他们觉得无法立即找到东西感到恼火. (7认同)
  • "但恕我直言,将视图和控制器混合到同一个文件夹中并不是一个好主意." - 为什么? (6认同)
  • 回复:"混合视图和控制器不是一个好主意." 意识到系统存在两个维度,即架构和业务.原始海报希望在一个地方保留处理某个业务问题的所有部分.默认的ASP.NET MVC布局将一个单独的业务问题分散开来,以便架构相似的类可以保持在一起.在这两个选择之间,我宁愿按业务关注而不是建筑关注来分组. (4认同)