覆盖MVC中的区域路径

时间:2015-04-17 15:56:48

标签: c# model-view-controller routes asp.net-mvc-routing

我使用下面显示文件夹结构的区域设置了解决方案

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

1 个答案:

答案 0 :(得分:1)

您能否显示其余的注册路线?记住映射的顺序很重要,这一点很重要。匹配的第一条路线将是选定的路线。

此外 - 通常在Global.asax.cs => Application_Start区域的路由在主应用程序的路由之前注册。如果您的应用程序出现这种情况,则需要在特定区域的注册中为此特殊控制器添加路由映射。

示例Global.Asax.cs

protected void Application_Start()
{
        GlobalConfiguration.Configure(WebApiConfig.Register);
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
}