Récupérer des valeurs à partir du réacheminement d'URL sur la page cible?
-
19-08-2019 - |
Question
Ok ... le routage d'URL fonctionne parfaitement, mais ne sait pas comment lire les valeurs de la page cible.
Un exemple ici montre l'utilisation de l'objet RouteValue à partir du RequestContext. Désormais, tout cela se trouve dans l'espace de noms System.Web.Routing, mais tout le monde semble ne les connecter qu'à MVC. D'où vient le RequestContext?
Comment lire ces paramètres ???
La chaîne de requête est également vide.
TIA! Kevin
La solution
Résolu celui-ci moi-même ... Yay me !!! :)
A commencé à bricoler avec des objets et a vu l'interface IHttpHandler fournir le RequestContext à la méthode GetHttpHandler.
Ainsi, j'ai modifié ma classe de page de base (j'ai toujours placé une couche entre System.Web.UI.Page et mes propres pages, en l'appelant BasePage ou similaire uniquement à cet effet). J'ai donc ajouté une propriété publique sur PVBasePage pour recevoir un objet RequestContext.
public RequestContext RequestContext { get; set; }
Ensuite, mon code de classe de routage est le suivant:
IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
// create the page object as my own page...
var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath
, typeof(PVBasePage)) as PVBasePage;
// pass in the request context
page.RequestContext = requestContext;
// return this page in the form of a IHttpHandler
return page as IHttpHandler;
}
Ainsi, au lieu de, comme dans l'exemple de code, créer l'instance directement en tant que IHttpHandler, je le crée comme ma propre page. Définissez la propriété de contexte de requête, puis renvoyez la page à l'appelant sous la forme d'un IHttpHandler.
Testé et ça marche. WOO HOO!
J'espère que cela aidera quelqu'un d'autre sur la route.