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?
Vous pouvez utiliser ce qui suit:
RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
Vous pouvez également utiliser ce qui suit:
//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
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 .
[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);
}