Ответ 1
Вы можете использовать следующее:
RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
При использовании маршрутизации ASP.Net, как вы можете получить RouteData из кода?
Я знаю, что вы можете получить его из метода GetHttpHander для RouteHandler (вам передается 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, после чего вы можете нажать значения в HTTPContext во время события GetHttpHandler.
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);
}