Url路由未知数量的参数

时间:2013-08-28 07:13:19

标签: c# asp.net routing routes custom-routes

我看过这篇文章:MVC Handler for an unknown number of optional parameters但它适用于MVC并且似乎不适合我,因为我收到错误:

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

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

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

1 个答案:

答案 0 :(得分:1)

下面未经测试的路线 - 通配符必须绝对是Url的最后一部分。因此,要在最后强制使用“.html”,您需要使用约束(第5个参数)。

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