2010-03-09 67 views
0

任何人都可以解釋爲什麼此代碼與給定的路線返回第一條路線?GetVirtualPath沒有任何意義

routes.MapRoute(null, "user/approve", new { controller = "Users", action = "Approve" }), 
routes.MapRoute(null, "user/{username}", new { controller = "Users", action = "Profile" }), 
routes.MapRoute(null, "user/{username}/{action}", new { controller = "Users" }), 
routes.MapRoute(null, "user/{username}/{action}/{id}", new { controller = "Users" }), 
routes.MapRoute(null, "search/{query}", new { controller = "Artists", action = "Search", page = 1 }), 
routes.MapRoute(null, "search/{query}/{page}", new { controller = "Artists", action = "Search" }), 
routes.MapRoute(null, "music", new { controller = "Artists", action = "Index", page = 1 }), 
routes.MapRoute(null, "music/page/{page}", new { controller = "Artists", action = "Index" }) 

var pageLinkValueDictionary = new RouteValueDictionary(this.linkWithoutPageValuesDictionary); 
pageLinkValueDictionary.Add("page", pageNumber); 
var virtualPathData = RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary); 

這裏GetVirtualPath總是返回用戶/批准,雖然路由中沒有{page}參數。而且,沒有第一條路線,一切都按預期工作。

我已經找到這個鏈接http://www.codeplex.com/aspnet/WorkItem/View.aspx?WorkItemId=2033但它不是很有幫助。它看起來像GetVirtualPath沒有實現大量的路由集合。

我正在使用ASP.Net MVC 1.0。

更新。我可以重新排列路線並獲得適當的結果。但我真的很想明白爲什麼在地球上選擇用戶/批准路線。

回答

1

嘗試增加行動控制器RouteValueDictionary

+0

不能。我的方法是行爲和控制器不可知的,因此,上下文。 – 2010-03-09 11:25:31

+0

有趣的是,我昨天看着它,並做到了這一點。 – 2010-04-18 23:58:32