2012-06-29 65 views
1

我有一系列在System.Web.Routing中定義的路由,並且需要獲取具有.aspx擴展名的實際url。我試過這個代碼但我在這裏做得不對:如何從路由列表中獲取實際的URL?

var path = RouteTable.Routes.GetVirtualPath(null, item.Link, null); 
var link = path.Route.GetVirtualPath(null, null); 
if (link.VirtualPath.ToLower().Contains("~/displaycmspage.aspx?pagename=")) 
{ 
     //do work on url here 
} 

我如何能做到這一點的任何想法? item.link是一個自定義對象,我有路線。

回答

1

好了,我找到了答案:

var path = RouteTable.Routes[item.Link]; 
Route ruta = path as Route; 
var link = ruta.RouteHandler as PageRouteHandler; 
if (link.VirtualPath.ToString().ToLower().Contains("~/displaycmspage.aspx?pagename=")) 
{ 
     //do work on url here 
} 
+0

不要使用'ToLower將()包含()'。使用'StringComparison.OrdinalIgnoreCase' [改爲](http://msdn.microsoft.com/zh-cn/library/ms224425.aspx)。 – abatishchev

+0

''PageRouteHandler.VirtualPath' is _already_' a [string](http://msdn.microsoft.com/en-us/library/system.web.routing.pageroutehandler.virtualpath.aspx)! – abatishchev

+0

- 我不知道StringComparison.OrdinalIgnoreCase - 謝謝 - 我知道它已經是一個字符串,我只是忘記了ToString()方法,因爲我經常更改代碼,而且我沒有做任何清理。無論如何,謝謝你的評論。 – Bobby5193

相關問題