2009-12-22 117 views
2

我们目前正在为我们的MVC应用程序使用默认的文件夹结构,并想知道是否可以将控制器及其相关视图放入同一个文件夹。ASP.NET MVC - 将控制器和相关视图放在同一个文件夹中?

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

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中获得有用的信息。

回答

6

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

+7

感谢。问题是我们的开发人员在Views文件夹和Controllers文件夹(以及其他文件夹,比如ViewModels和Mappers,我将以任何方式进行整合)之间来来回回地讨厌。他们希望将他们放在一个地方,以便他们可以快速切换与某个动作相关的所有内容。他们来自webforms背景,所以我可以在一定程度上理解。他们喜欢ASP.NET MVC,但被他们感觉无法立即找到事物所困扰。 – 2009-12-22 08:49:25

+1

在Action Method和它的视图之间有一条捷径。这可以使查找更容易。如果您右键单击某个操作方法并选择“转到视图”。您可以右键单击视图并选择“转到控制器”,它会将您带到该视图的默认控制器。键盘快捷键ctrl&M然后ctrl&G也一样。 – 2009-12-22 09:27:57

+1

理想的提示,理查德 - 这将缓解一些痛苦(至少在我说服老板花费一些钱在Resharper许可证上) – belugabob 2009-12-22 13:02:45

1

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

如果Visual Studio具有IntelliJ IDEA中的更多功能,文件之间的导航将不那么痛苦。

事实上,随着时间的推移,几乎任何文件夹结构都会降级,因为将越来越多的文件添加到项目中,而更好的工具通常是更有效的解决方案。为了公平起见,VS2010似乎已经开始采用一些IntelliJ的想法,所以事情可能会有所改善 - 但在微软赶上之前还有很长的路要走。

编辑:我忘了提,有一个plugin,提供大量的Visual Studio更多的功能 - 几乎使之达到同一水平的IntelliJ

相关问题