Asp.net mvc MVC 4普通区域路由自动管理区域
我有这些路线Asp.net mvc MVC 4普通区域路由自动管理区域,asp.net-mvc,routing,routes,Asp.net Mvc,Routing,Routes,我有这些路线 routes.MapRoute( "Default", "{controller}/{action}/{id}", new {area="", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "WebControllers.Controllers" }); routes.M
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时,一切正常。
但即使我在正常区域没有用户控制器,/users路由到/admin/users控制器,但它找不到视图并给出错误信息
我如何防止/users路径路由到/admin/users?我不确定我是否完全理解这个问题,但我相信解决方案是更改MapRoute调用的顺序。您应该按路线的具体程度顺序添加路线 例如,如果按此顺序添加管线
{controller}/{action}/{id}
Admin/{controller}/{action}/{id}
与控制器/操作/id匹配的任何url都将被匹配和路由。第二条路线永远不会被使用
但是,如果您交换订单,mvc将首先匹配Admin/controller/action/id。从本质上讲,路由将在第一次运行后停止检查匹配项