2009-06-10 63 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