2010-07-07 52 views
2

任何人都知道是否可以将HomeController和Home相关的视图移动到Areas目录中?ASP.NET MVC:可能将“主页”移动到区域?

我试图保持我的根目录很好,干净,并避免有〜/ Views和〜/ Controllers目录,如果我可以。此外,我可以通过解释这些根文件夹仅用于主页文件,其他所有内容位于Areas文件夹中,导致一些混淆。我想,这不符合我的组织意识。

我是使用我家小区的路线注册下面来最接近的:

context.MapRoute(
    "Home_default", 
    "Home/{action}/{id}", 
    new { controller="Home", action = "index", id = UrlParameter.Optional } 
); 

...但是,这并不赶上只是简单的“www.mydomain.com/”。为此,我需要在Global.asax中告诉我的“全部捕获”路由,以某种方式将该请求发送到我的“主页”区域。简单地将area =“Home”添加到路线数据不起作用。对“/”的请求仍然在我的根目录中查找HomeController和Views。

任何想法?

+0

这是我发现的最接近的事,但它仍然没有解决它的问题有重复的“意见”,“控制器”和“模式”在我的应用程序的根文件夹: http://forums.asp.net/p/1530007/3706429.aspx – 2010-08-11 15:31:11

+0

也发现了这个:http://zh.efreedom.com/Question/1-2140208/how-to-set-a-default-route-to- an-area-in-mvc – 2010-08-11 15:49:29

+0

这似乎与此处更好回答的问题相同(或非常相似):http://stackoverflow.com/questions/2140208/how-to-set-a-default- route-to-an-area-in-mvc – Anthony 2011-08-17 13:47:44

回答

0
// These additions allow me to route default requests for "~/" to the "home" area 
engine.ViewLocationFormats = new string[] { 
    "~/Views/{1}/{0}.aspx", 
    "~/Views/{1}/{0}.ascx", 
    "~/Areas/{1}/Views/{1}/{0}.aspx", // new 
    "~/Areas/{1}/Views/{1}/{0}.ascx", // new 
    "~/Areas/{1}/Views/{0}.aspx", // new 
    "~/Areas/{1}/Views/{0}.ascx", // new 
    "~/Views/{1}/{0}.ascx" 
}; 
+0

这是不是很好解释 - 这段代码去哪里,它做什么? – Anthony 2011-08-17 13:46:49

+0

这只是添加到默认视图位置,以便视图引擎将在更多位置查找视图。 – 2011-08-17 15:14:22

0

在应用您的路由之前,IIS可能会在请求URL中添加“default.aspx”或某个默认文档名称,在这种情况下,您的示例将不起作用。 (这可以在IIS中配置。)

你需要这样的

context.MapRoute(
    "Home_root" 
    ,"/" 
    ,new { controller="Home", action="index", id=UrlParameter.Optional } 
); 

的路线,但是,当然,路由不能用 “/”, “〜” 开始,等

context.MapRoute(
    "Home_root" 
    ,"default.aspx{*parameters}" /// or .htm, .asp, .html or whatever IIS may be adding 
    ,new { controller="Home", action="index", id=UrlParameter.Optional } 
); 

HTH。匆忙,所以我没有试图编译任何这个。

+0

谢谢,但我无法得到那个工作。我在本地测试VS开发环境。我用Phil Haack的路由调试器检查了它,但仍然无法获得指向我的Home区域的全部路由。 – 2010-07-07 23:17:45