我一直在使用ASP.Net MVC(3)一段时间了,我非常喜欢它。但有一件事我觉得有点讨厌,就是不得不一直在controllers/views/model/script目录之间浏览。所以我想知道是否有办法告诉MVC在不同位置查找文件?更改ASP.Net MVC目录结构
也许有人可以告诉我如何简单地组文件一起由控制器,如:
目录:/会员
- MembershipController
- LogOnView
- LogOnModel
- RegisterView
- RegisterModel
亲切的问候奥拉夫
我一直在使用ASP.Net MVC(3)一段时间了,我非常喜欢它。但有一件事我觉得有点讨厌,就是不得不一直在controllers/views/model/script目录之间浏览。所以我想知道是否有办法告诉MVC在不同位置查找文件?更改ASP.Net MVC目录结构
也许有人可以告诉我如何简单地组文件一起由控制器,如:
目录:/会员
亲切的问候奥拉夫
我想你需要获得通过电动工具更新解决方案导航器扩展VS 2010
这样一来,就可以在解决方案导航显示,而不是解决方案资源管理器,只有打开的文件,例如。使它更容易。
顺便说一句,删除所有的模型文件夹,并创建一个单独的样板工程,如:
MyApp.Domain
的任何解决方案,它超出了基本都会从中受益。
正如您对问题的评论所述,地区也将减少您的导航要求。
我确切地知道你在说什么。下面是在那里我找到了默认MVC文件夹结构是繁重的条件:
为什么我要将每个这些作品放在不同的文件夹中?
我创建的视图文件夹视图中的文件夹,让你有一个文件夹〜/查看/ MyEntityList(就像传统的MVC方式),但我把一切,涉及到该组件有:
~/Views/MyEntityList/
MyEntityListController.cs
MyEntityListModel.cs
MyEntityList.js
MyEntityList.aspx
我觉得这个结构会让所有的开发人员保持视图相互分离。除了允许浏览器直接访问.js资源之外,不需要任何特殊的MVC配置。
有一些架构模式,这可能不是一个好方法。对于模型 - 观看模式(更多描述请参见Los Techies),我非常喜欢这种结构。
唯一的“寻找文件”事情是有意见,一切只是一个约定。因此,如果你愿意,你可以有:
目录:/会员
- MembershipController
- LogOnView
- LogOnModel
- RegisterView
- 个RegisterModel
...但意见必须在~/Views/Membership
不,视图可以在任何地方。你只是没有找到你正常寻找的好路径。您可以指定您喜欢的任何路径到您的视图的任何位置。 –
@Mystere Man:是的,你可以使用绝对路径。我在谈论框架如何定位东西,所以除非你使用绝对路径,否则视图必须在'〜/ Views'中。 –
看起来你需要覆盖的视图引擎的一些行为。你可以See this question得到一个更好的主意。
我可以想到的一种方法是实现这一点,就是编写自定义视图引擎。你可以把所有这些低于控制器/会员
模式将不会是一个问题,你可以简单地改变文件模型的命名空间,唯一的问题是视图。为此,编写自定义视图引擎,以便您的mvc应用程序知道视图文件的物理位置,如下所示。
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
{
ViewLocationFormats = new[]
{
"~/Controllers/{1}/{0}.cshtml",
};
}
}
在通过的global.asax.cs包括下面的代码
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
您可能还需要照顾其他各种因素,如更新取决于布局属性加在的Application_Start()的视图引擎放置_Layout.cshtml的位置。
如果您正在使用区域,请同时添加AreaViewLocationFormats字符串数组。
您可以通过覆盖FileExists,CreateView,CreatePartialView等方法进行进一步的自定义。
注意:不要忘记将views文件夹中的web.config复制到Membership控制器。否则,应用程序找不到所需的mvc命名空间,并且找不到像viewbag,model等符号。
我认为您对MVC领域感兴趣:http://msdn.microsoft.com/en-us/library/ ee671793.aspx –
@Kirk我认为即使在使用MVC区域之后,您仍然需要浏览每个区域中的控制器/视图/模型。 –
安装Resharper。要转到控制器或视图等(使用Idea键绑定),只需按Ctrl-N并开始输入名称,然后从列表中选择。您的工具让生活更轻松。不幸的是,它不适用于脚本: -/ – Sean