Reputation: 8737
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?
Upvotes: 52
Views: 34134
Reputation: 748
[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);
}
Upvotes: 3
Reputation: 5963
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.
Upvotes: 0
Reputation: 42443
You could also use the following:
//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
Upvotes: 165
Reputation: 3061
You can use the following:
RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
Upvotes: 37