区域路线是否可以同时与非区域路线共存?

时间:2010-09-29 16:14:59

标签: asp.net asp.net-mvc

我有一个现有项目,我想介绍区域并保留原始代码。

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

我是否必须修改路由才能使用?即默认区域是“”?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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中设置的路由。您将为您的区域设置路线,并且它们将如上所示区分,并且将避免冲突。