web-dev-qa-db-fra.com

Comment pouvez-vous accéder à roudata à partir du code-derrière?

Lors de l'utilisation de l'acheminement ASP.NET, comment pouvez-vous obtenir le roudata du code-derrière?

Je sais que vous pouvez l'obtenir de la méthode Gethttphanander de RouteHandler (vous obtenez la remise de la demandeContext), mais pouvez-vous obtenir cela à partir du code-derrière?

Y a-t-il quelque chose comme ...

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

... que vous pouvez accéder à l'échelle mondiale, comme vous pouvez le faire avec httpcontext?

Ou est-ce que ROUDERDATA est seulement censé être accessible de l'intérieur du routier?

47
Deane

Vous pouvez utiliser ce qui suit:

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
33
Rupert Bates

Vous pouvez également utiliser ce qui suit:

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
158
Hosam Aly

Je pense que vous devez créer un routierhandler, alors vous pouvez appuyer sur les valeurs dans httpcontext lors de l'événement GethtTtPhandler.

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

Vous pouvez trouver plus d'informations dans cet article MSDN .

0
Jeff
  [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
RASKOLNIKOV