2009-06-10 13 views
42

ASP.Netルーティングを使用する場合、コードビハインドからRouteDataを取得するにはどうすればよいですか?コードビハインドからRouteDataにどのようにアクセスできますか?

私はRouteHandlerのGetHttpHanderメソッド(RequestContextを渡す)から取得できますが、これはコードビハインドから取得できるのでしょうか?

はあなたのHttpContextで行うことができますようにあなたは、世界的にアクセスできることを... ...何のような

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

ありますか?

また、RouteDataはRouteHandler内からのアクセスのみを目的としていますか?

+0

だけUrl.RouteUrlのようなURLを作成するには、コード内でGetRouteUrl-メソッドを使用することができます-behindファイル。 (私はこれがあなたの質問に対する答えではないことを知っていますが、私はこの問題のためにGoogleでいつもあなたの質問を見つけるので、多分それは誰かを助けるでしょう:-) –

答えて

31

あなたは以下のように使用することができます。

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

これを行うことによって、これはN個のリクエストがあなたのルートテーブルに当たるのと同じです。 –

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

これははるかにパフォーマンスのよい方法です。 –

+0

Spot on @HosamAly – Korayem

+0

これはRenderActionでは機能しません – bendytree

関連する問題