【问题标题】:Overriding the area route in MVC覆盖 MVC 中的区域路由
【发布时间】:2015-06-24 14:10:48
【问题描述】:

我使用具有如下所示文件夹结构的区域设置了一个解决方案

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" }
); 

我想配置路由,这样任何带有控制器名称“特殊”的 url 都会路由到根特殊控制器,无论 {path} 是否是区域名称。例如

/AnyTextDoesntMatter/Special/Index/1
/Admin/Special/Index/1
/Marketing/Special/Index/1    //these should all route to the root special controller

【问题讨论】:

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


    【解决方案1】:

    能否请您显示您注册的其余路线?重要的是要记住映射的顺序很重要。第一个匹配的路线将是选择的路线。

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

    示例 Global.Asax.cs

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

    【讨论】:

    • 没有意识到全局排序是至关重要的。我先注册了默认root,先用它
    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多