Подтвердить что ты не робот

Как вы можете получить доступ к RouteData из кода?

При использовании маршрутизации ASP.Net, как вы можете получить RouteData из кода?

Я знаю, что вы можете получить его из метода GetHttpHander для RouteHandler (вам передается RequestContext), но можете ли вы получить это из кода?

Есть ли что-то вроде...

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

... что вы можете получить доступ глобально, как вы можете сделать с HttpContext?

Или это то, что RouteData предназначен только для доступа изнутри RouteHandler?

4b9b3361

Ответ 1

Вы можете использовать следующее:

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));

Ответ 2

Вы также можете использовать следующее:

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData

Ответ 3

Я думаю, вам нужно создать RouteHandler, после чего вы можете нажать значения в HTTPContext во время события GetHttpHandler.

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

Вы можете найти дополнительную информацию в этой статье MSDN.

Ответ 4

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