2008-11-25 28 views
4

重寫如果你有一個路線:RouteValueDictionary上下文

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

你可以試試以下內容,看看它是否有效。

這個地方,

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

..before,

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

具體到通用。

0

中的C MVC並不代表複雜...

我認爲你不應該使用URL路由來實現這一類型的功能 - 你是好得多傳遞這種數據作爲POST或GET (我更喜歡前者的堆整理)到CONTROLLER,然後從那裏整理出業務邏輯。

在您的路線圖變得徹底難以使用衆多不同的搜索組合之前,需要多長時間?

相關問題