2009-06-10 30 views
42

當使用ASP.Net路由,你怎麼從代碼隱藏獲得的RouteData?你怎麼能在後臺代碼訪問的RouteData?

我知道你可以從RouteHandler(你會交到的RequestContext)的GetHttpHander方法得到它,但你可以從代碼隱藏弄來的?

有什麼樣...

RequestContext.Current.RouteData.Values["whatever"]; 

...您可以在全球訪問,比如你可以用HttpContext的呢?

還是說RouteData只能從RouteHandler內部訪問?

+0

創建一個URL就像Url.RouteUrl,您可以使用GetRouteUrl - 法碼 - 在後面的文件。 (我知道這不是你的問題的答案,但當我谷歌這個問題時,我總是找到你的問題,所以也許它會幫助某人。:-) – 2014-06-26 09:55:30

回答

31

您可以使用以下方法:

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); 
+8

請注意,通過這樣做,你再次調用路由再次,這就像N個請求打到你的路由表。 – 2011-07-14 00:05:09

0

我認爲你需要創建一個RouteHandler,然後你可以在GetHttpHandler事件期間將值推送到HTTPContext中。

foreach (var urlParm in requestContext.RouteData.Values) { 
    requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value; 
} 

你可以在this MSDN article找到更多的信息。

139

您還可以使用以下方式:

//using System.Web; 
HttpContext.Current.Request.RequestContext.RouteData 
+12

這是更高性能的方式來做到這一點。 – 2011-07-14 00:16:53