【问题标题】:Repeating a Parameter in a ASP.NET MVC Route在 ASP.NET MVC 路由中重复参数
【发布时间】:2011-03-15 15:59:44
【问题描述】:

我正在尝试编写与以下 URL 格式匹配的路由:

/category1/category2/S/

类别数量未知,因此可能有 1 个类别,也可能有 10 (1..N) 个。

我不能使用全部捕获,因为类别不在 URL 的末尾。

我实际上是在这里路由到一个网络表单(使用 Phil Haack 的示例 http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx),但这真的是无关紧要的。

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我认为这是不可能的,但您可以尝试使用这条路线解决它:

      {类别}/S

      然后自己使用“/”字符拆分类别。

      我做了一个网站,只是通过注册 3 条路线将其固定为 1-3 个类别,但我不得不解决很多事情,之后对它并不满意。

      编辑:使用 S/{*categories} 将捕获类别。您只能在 URL 的末尾使用它。

      【讨论】:

      • 我确实尝试了 {categories}/S 路线,但它不匹配。如果我在类别之间使用不同的分隔符(例如破折号:/category1-category2/S/),那么它似乎工作正常。问题是我无法更改分隔符,我必须使用“/”。
      【解决方案3】:

      正是你需要的(编辑)

      这是一个久违的镜头,但我似乎正好有你需要的东西。我编写了一个GreedyRoute 类,它允许在 URL 中的任何位置使用贪婪段(在开头、中间或结尾 - 这已经受支持)。

      您可以阅读所有详细信息on my blog 以及获取此特定类的代码。

      主要是它支持以下任何一种模式:

      • {segment}/{segment}/{*segment}
      • {segment}/{*segment}/{segment}
      • {*segment}/{segment}/{segment}

      不支持多个贪婪段(这当然也是可能的,但在这种情况下应该遵守一些限制),但我想这是一个罕见的例子,可以使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        相关资源
        最近更新 更多