ASP.Netルーティングを使用する場合、コードビハインドからRouteDataを取得するにはどうすればよいですか?
RouteHandlerのGetHttpHanderメソッドから取得できることは知っています(RequestContextを渡されます)が、コードビハインドから取得できますか?
何かありますか...
RequestContext.Current.RouteData.Values["whatever"];
... HttpContextでできるのと同じように、グローバルにアクセスできますか?
それとも、RouteDataはRouteHandler内からのみアクセスすることを意図しているのでしょうか?
次のものを使用できます。
RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
次のものも使用できます。
//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
RouteHandlerを作成する必要があると思います。そうすれば、GetHttpHandlerイベント中に値をHTTPContextにプッシュできます。
foreach (var urlParm in requestContext.RouteData.Values) {
requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value;
}
詳細については、 このMSDN記事 を参照してください。
[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);
}