重复ASP.NET MVC路由中的参数

时间:2009-10-23 11:43:03

标签: asp.net-mvc routing

我正在尝试编写符合以下网址格式的路线:

/类别1 /类别2 / S /

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

我不能使用catch,因为类别不在URL的末尾。

我实际上是在这里路由到一个网页表单(使用Phil Haack的例子http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx),但实际上这不是重点。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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

{类别} / S

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

我创建了一个网站,我通过注册3条路线将其修改为1-3个类别,但我不得不解决很多问题,之后并不满意。

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

答案 2 :(得分:0)

正是您所需要的(编辑)

这是一个长时间丢失的镜头,但我似乎完全符合你的需要。我写了一个GreedyRoute类,允许在网址的任何地方贪婪段(在开头,中间或末尾 - 已经支持)。

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

主要的是它支持这些模式中的任何一种:

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

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