web-dev-qa-db-ja.com

コードビハインドからRouteDataにアクセスするにはどうすればよいですか?

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

RouteHandlerのGetHttpHanderメソッドから取得できることは知っています(RequestContextを渡されます)が、コードビハインドから取得できますか?

何かありますか...

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

... HttpContextでできるのと同じように、グローバルにアクセスできますか?

それとも、RouteDataはRouteHandler内からのみアクセスすることを意図しているのでしょうか?

47
Deane

次のものを使用できます。

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
33
Rupert Bates

次のものも使用できます。

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
158
Hosam Aly

RouteHandlerを作成する必要があると思います。そうすれば、GetHttpHandlerイベント中に値をHTTPContextにプッシュできます。

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

詳細については、 このMSDN記事 を参照してください。

0
Jeff
  [HttpGet]
  [Route("{countryname}/getcode/")]
  public string CountryPhonecode()
  {
     // Get routdata by key, in our case it is countryname
     var countryName = Request.GetRouteData().Values["countryname"].ToString();

     // your method
     return GetCountryCodeByName(string countryName);
  }
0
RASKOLNIKOV