Comment utilisez-vous les chaînes de requête avec le routage ASP.NET?
-
03-07-2019 - |
Question
Le nouveau routage ASP.NET est idéal pour les URL de style de chemin simple, mais si vous souhaitez utiliser une URL telle que:
http://example.com/items/search .xhtml? term = Text + to + find & amp; page = 2
Devez-vous utiliser un paramètre catch all avec une validation?
La solution
Tous les éléments de données d'affichage qui ne sont pas répertoriés dans l'itinéraire sont automatiquement mappés à la chaîne de requête. Par conséquent, si vous mappez " items / search.xhtml " à une action:
Search(string term, int page)
Ensuite, vous devriez obtenir les résultats que vous recherchez.
Autres conseils
Vous pouvez également faire correspondre les paramètres de chaîne de requête aux itinéraires. Si vous voulez tout capturer, vous devez ajouter un paramètre comme suit:
{* contentUrl}
Qui va peupler le reste de l'URL dans cette variable.
J'avais également du mal à transmettre une URL codée à une route en tant que paramètre de route.
Vous ne pouvez pas utiliser de caractères encodés dans l'URL dans une URL, mais dans une chaîne de requête.
J'avais donc besoin que mon itinéraire contienne également un élément de chaîne de requête.
Disons que j'ai un itinéraire:
MapPageRoute("myroute", "myroute/{x}", "~/routehander.aspx")
Mais je le veux sous la forme de:
http://mywebsite.com/myroute/{x}?url=myurl
Nous pouvons faire ceci:
Dim x as integer = 12
Dim rvd As New Routing.RouteValueDictionary
rvd.Add("x", x)
rvd.Add("url", Server.UrlEncode("/default.aspx"))
HttpContext.Current.ApplicationInstance.Response.RedirectToRoutePermanent("myroute", rvd)
Cela nous redirigerait vers l'URL suivante:
http://mywebsite.com/myroute/12?url=%252fdefault.aspx
Vous pouvez toujours utiliser Request.QueryString [" some_value &];;