如果你有路线:
routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _
New With {.filter1 = "", .filter2 = "", .filter3 = ""})
然后在路径模式满意的视图中使用/member/search/dev/phil/hoy
的网址,当您尝试创建另一个仅存在filter1
的路由网址时,即
<%=Url.RouteUrl(New RouteValueDictionary(
New With {.controller="member",.action="search", .filter1="dev"}))%>
结果是当前路线/member/search/dev/phil/hoy
,而不是预期的修剪路线/member/search/dev
我已经设法直接使用RouteTable.Routes.GetVirtualPath
方法解决了这个问题,但有没有人知道它为什么会这样工作,或者它可能是一个错误?
答案 0 :(得分: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 = ""})
特定于通用。
答案 1 :(得分:0)
我相信你不应该使用URL路由来实现这种类型的功能 - 你最好将这种数据传递给CONTROL或GET(我更喜欢前者更整洁)到CONTROLLER,然后整理出来那里的商业逻辑。
使用多种不同的搜索组合,路线图变得完全笨拙之前会有多长时间?