如果您有路线:
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/