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?

Était-ce utile?

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 &];;

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