2009-06-10 7 views
42

Wie können Sie bei der Verwendung von ASP.Net-Routing die RouteData aus dem Code-Behind abrufen?Wie können Sie aus dem Code-Behind auf RouteData zugreifen?

Ich weiß, dass Sie es von der GetHttpHander-Methode des RouteHandler bekommen können (Sie erhalten den RequestContext), aber können Sie das aus dem Code-Behind bekommen?

Gibt es etwas wie ...

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

... dass Sie global zugreifen können, wie Sie mit Httpcontext tun kann?

Oder ist RouteData nur für den Zugriff aus dem RouteHandler gedacht?

+0

So erstellen Sie eine URL wie Url.RouteUrl, können Sie die GetRouteUrl-Methode im Code verwenden -Hinter-Datei. (Ich weiß, das ist keine Antwort auf deine Frage, aber wenn ich nach diesem Problem suche, finde ich immer deine Frage. Also vielleicht hilft es jemandem. :-) –

Antwort

31

können Sie verwenden, um die folgenden:

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

Achte darauf, dass du wieder in den Router rufst wieder und das ist wie N Anzahl der Anfragen, die Ihre Routentabelle treffen. –

0

Ich denke, Sie müssen einen RouteHandler erstellen, dann können Sie die Werte während des GetHttpHandler -Ereignisses in HTTPContext schieben.

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

Weitere Informationen finden Sie unter this MSDN article.

139

Sie auch die folgenden verwenden:

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

Dies ist der viel leistungsfähigere Weg, es zu tun. –

+0

Spot on @HosamAly – Korayem

+0

Dies funktioniert nicht mit RenderAction – bendytree

Verwandte Themen