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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top