未知参数数的Url路由

本文关键字:Url 路由 数数 参数 未知 | 更新日期: 2023-09-27 18:29:28

我看过这篇文章:MVC处理程序,用于未知数量的可选参数,但它适用于MVC,似乎对我不起作用,因为我收到了一个错误:

A path segment that contains more than one section, such as a literal section or a parameter, cannot contain a catch-all parameter.

我希望能够在Url中有不确定数量的参数,我有以下路线:

RouteCollection.MapPageRoute("ManyParam", "{*params}.html", "~/Default.aspx");

这似乎也触发了上面的错误消息。

如何在web表单(而不是MVC)中设置具有未知数量参数的路由。

我正在尝试实现以下网址:

www.example.com/some-thing.html
www.example.com/some-thing/else.html
www.example.com/and/some-thing/else.html
www.example.com/1/2/3/4/5/6.html

编辑

当我使用以下内容时,它似乎起作用:

RouteCollection.MapPageRoute("ManyParam", "{*params}", "~/Default.aspx");

问题是它不允许在末尾使用.html

未知参数数的Url路由

下面未测试的路由-通配符必须是Url的最后一部分。因此,要在末尾强制使用".html",需要使用constraint(第五个参数)。

routes.MapPageRoute(
    "ManyParam",
    "{*path}",
    "~/Default.aspx",
    false,
    new RouteValueDictionary(),
    new RouteValueDictionary { { "path", @".*'.html" } }
 );