ASP.NET MVC通配符控制器任何参数路由

本文关键字:任何 参数 路由 控制器 通配符 NET MVC ASP | 更新日期: 2023-09-27 18:23:50

我想要控制器/操作,这样当我导航到:时

mysite.com/whatever. i type here will pipe into...a ! string.
public ActionResult Index(string anything)
{
    // anything = whatever. i type here will pipe into...a ! string.
    return View();
}

我需要设置自定义路线吗?

我试过这个,但它似乎不适合经期等。

        routes.MapRoute(
            name: "Default",
            url: "{*anything}",
            defaults: new { controller = "Home", action = "Index" }
        );

ASP.NET MVC通配符控制器任何参数路由

如果您使用catch-all正则表达式约束您的路线:

routes.MapRoute(
    "Default",
    "{*anything}",
    new { controller = "Home", action = "Index" },
    new { anything = @"^(.*)?$" }
);

并确保您在web.config中设置了UrlRoutingModule,并且没有任何先决条件来确保即使是非托管请求(例如那些被视为具有扩展名的请求)也能通过路由模块,您的catchall路由也能正常工作。