我使用下面显示文件夹结构的区域设置了解决方案
Controllers
---HomeController
---SpecialController
Areas
---Admin
-----Controllers
-------AController
-------BController
---Marketing
-----Controllers
-------CController
-------DController
我已按如下方式注册默认路由:
routes.MapRoute(
"Default",
"{path}/Special/{action}/{id}",
new { controller = "Special", action = "Index", id = UrlParameter.Optional, path = UrlParameter.Optional },
new string[] { "SomeNamespace.WebApplication.Controllers" }
);
我想配置路由,以便任何具有控制器名称的网址'特殊'无论{path}是否为区域名称,都会路由到根特殊控制器。 e.g。
/AnyTextDoesntMatter/Special/Index/1
/Admin/Special/Index/1
/Marketing/Special/Index/1 //these should all route to the root special controller
答案 0 :(得分:1)
您能否显示其余的注册路线?记住映射的顺序很重要,这一点很重要。匹配的第一条路线将是选定的路线。
此外 - 通常在Global.asax.cs => Application_Start区域的路由在主应用程序的路由之前注册。如果您的应用程序出现这种情况,则需要在特定区域的注册中为此特殊控制器添加路由映射。
示例Global.Asax.cs
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}