MVC 5 AttributeRouting Catch All

Ivo*_*Ivo 10 attributerouting asp.net-mvc-5

如何使用MVC中的新属性路由创建捕获所有路由

我试过这个: [Route("{pagenode}", Order = 999)]

但是当我有一条命名路线时 [Route("contact"]

我收到了"Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL."错误.

Jim*_*uck 19

如果路径中的第一个"目录"是固定的,则可以使用属性路由完成此操作.

例如,以匹配任何撞击/questions/questions/4/questions/answers/42那么你可以使用[Route("questions/{*catchall}"].


L01*_*1NL 3

您无法使用属性路由来执行此操作,请使用 MVC4 方式执行此操作:

在路线映射器中映射路线,如下所示:

routes.MapRoute("RouteName","{*url}",new { controller = "YourFancyController", action = "YourAction" });
Run Code Online (Sandbox Code Playgroud)

这将是您的包罗万象的路线。

如果您想将所有路由映射到其控制器,您可以这样做:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapMvcAttributeRoutes();

    AreaRegistration.RegisterAllAreas();

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
Run Code Online (Sandbox Code Playgroud)