2010-09-29 72 views
2

我有一个现有的项目,我想intorduce区域并保持原来的代码,因为它是。区域路线是否可以同时与非区域路线共存?

/web/controllers 
/web/views 
.. 
/web/areas/new-area/ 
/web/areas/new-area/controllers 
.. 

我必须修改路由这个工作?即默认区域是“”?

+0

必须有一个更好的标题... – jfar 2010-09-29 17:01:29

+0

想要添加评论和希望相关链接到这个问题用不正确的答案。 http://stackoverflow.com/questions/3814772/existing-web-app-want-to-add-areas-what-are-the-ramifications-of-this – jfar 2010-09-29 17:05:23

回答

2

是的,这是可能的。每个区域都有独立的路由注册文件,因此您仍然可以像以前一样保留控制器和视图。

+1

*不工作*不是一个非常精确的问题描述。它更常用于简单的用户而不是软件开发人员。 – 2010-09-29 16:44:02

0

你原来的路线登记可能看起来是这样的:

routes.MapRoute(
       "Default",            // Route name 
       "{controller}/{action}/{id}",       // URL with parameters 
       new 
       { 
        controller = "Home", 
        action = "Index", 
        id = "" 
       } // Parameter defaults 
      ); 

的关键是你的地区有,您可以设置该区域的路线的AreaRegistration。里面的域名注册,它看起来像这样:

context.MapRoute(
       "MyArea_default", 
       "MyArea/{controller}/{action}/{id}", 
       new { action = "Index", id = UrlParameter.Optional } 
      ); 

请注意,您已经定义了路由的第一段如何具有“MyArea”(或称之为任何你想要的)。这是区域与默认路线的区别。

因此,总结一下,您不必修改已经在global.asax中设置的路线。您将为您所在地区设置路线,并按上图所示区分路线并避免冲突。