如果您有路线:

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

然后在路由模式满足的 View 中,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 方法设法解决了这个问题,但是有没有人知道它为什么会这样工作,或者它可能是一个错误?

最佳答案

您可以尝试以下操作,看看它是否有效。

放置这个,

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 = ""})

特定于泛型。

关于asp.net-mvc - RouteValueDictionary 被上下文覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/316924/

10-17 02:01