MVC 4正常区域自动路由管理区域

时间:2014-04-04 11:37:50

标签: asp.net-mvc routing routes

我有这些路线

  routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new {area="", controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "WebControllers.Controllers" });

  routes.MapRoute(
           "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new {Area="Admin", Controller = "Home", action = "Index", id = UrlParameter.Optional },
          new[] { "WebControllers.Areas.Admin.Controllers" });

我在管理区域有用户控制器。当我尝试联系/ admin / users时,它没问题。 但即使我没有普通区域的用户控制器(""),/用户路由到/ admin / users控制器,但它无法找到视图并给出错误。

如何防止/用户路径路由到/ admin / users?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这个问题,但我相信解决方案是更改MapRoute调用的顺序。您应该按照具体的具体顺序添加路线。

例如,如果按此顺序添加路线

 {controller}/{action}/{id}
 Admin/{controller}/{action}/{id}

任何匹配controller / action / id的url都将匹配并路由。第二条路线永远不会被使用。

但是,如果你交换订单,mvc将首先匹配Admin / controller / action / id。基本上,路由将在第一个工作之后停止检查匹配。