Как вы можете получить доступ к RouteData из кода? - PullRequest
47 голосов
/ 10 июня 2009

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

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

Есть что-нибудь подобное ...

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

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

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

Ответы [ 4 ]

158 голосов
/ 12 мая 2011

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

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
33 голосов
/ 07 октября 2009

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

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
0 голосов
/ 20 мая 2019
  [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);
  }
0 голосов
/ 15 июня 2009

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

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

Вы можете найти больше информации в этой статье MSDN .

...