4

如果您有路线:

routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _
  New With {.filter1 = "", .filter2 = "", .filter3 = ""})

然后在一个由 url 的路由模式满足的视图中/member/search/dev/phil/hoy,当您尝试创建另一个仅filter1存在的路由 url 即

<%=Url.RouteUrl(New RouteValueDictionary(
  New With {.controller="member",.action="search", .filter1="dev"}))%>

结果是当前路线/member/search/dev/phil/hoy,而不是预期的修剪路线/member/search/dev

我已经设法通过RouteTable.Routes.GetVirtualPath直接使用方法来解决这个问题,但是有谁知道它为什么会这样工作,或者它可能是一个错误?

4

2 回答 2

0

MVC 中的 C 不代表复杂...

我相信你不应该使用 URLs Routes 来实现这种类型的功能 - 你最好将这种数据作为 POST 或 GET (我更喜欢前者它的堆更整洁)传递给 CONTROLLER,然后从那里。

需要多长时间才能使您的路线图因众多不同的搜索组合而变得完全笨拙?

于 2010-12-08T00:45:46.413 回答
0

您可以尝试以下方法,看看它是否有效。

放置这个,

routes.MapRoute("search", "{controller}/{action}/{filter1}/", _
  New With {.controller="member",.action="search", .filter1="dev"})

..前,

routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _
  New With {.filter1 = "", .filter2 = "", .filter3 = ""})

具体到泛型。

于 2010-12-07T22:46:11.040 回答