How can you access RouteData from the code-behind?

Viewed 29187

When using ASP.Net routing, how can you get the RouteData from the code-behind?

I know you can get it from the GetHttpHander method of the RouteHandler (you get handed the RequestContext), but can you get this from the code-behind?

Is there anything like...

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

...that you can access globally, like you can do with HttpContext?

Or is it that RouteData is only meant to be accessed from inside the RouteHandler?

4 Answers
  [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);
  }

I think you need to create a RouteHandler then you can push the values into HTTPContext during the GetHttpHandler event.

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

You can find more information in this MSDN article.

Related