MVC项目中具有区域的默认路线

时间:2019-06-03 09:19:25

标签: asp.net-mvc asp.net-mvc-4 model-view-controller asp.net-mvc-routing

我有一个ASP MVC 4项目,其中包含一些区域,其结构如下:

  • 地区
    • 我的区域
      • 控制器
        • MyAreaController.cs
      • MyAreaRegistration.cs
  • 控制器
    • HomeController.cs
  • Global.asax

在Global.asax中,我先注册区域路由,然后注册全局路由:

   AreaRegistration.RegisterAllAreas();
   RegisterRoutes(RouteTable.Routes);

我在RegisterRoutes中有一条默认路由:

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

现在,我希望项目的默认路由指向MyArea中的一个动作(以返回URL作为参数的登录页面),而不影响其余路由。我试图在MyAreaRegistration中设置默认路由:

 context.MapRoute(
       "MyArea_Default",
       "{controller}/{action}/{returnUrl}",
       new { controller = "MyArea", action = "LogOn", returnUrl = "/Home/Index" },
       new[] { "Areas.MyArea.Controllers" }
       );

这正在工作,项目从所需的视图开始。但是,问题在于,项目中使用的许多路由(例如/ Home / Help)都将匹配MyArea_Default路由,因为它是在Default路由之前注册的。尝试在RegisterRoutes中设置区域DataToken还会弄乱不在该区域中的所有其他路由。

如何在不弄乱其他所有内容的情况下实现该区域的默认路线?

感谢您的帮助。

0 个答案:

没有答案