Come si usano le stringhe di query con il routing ASP.NET?
-
03-07-2019 - |
Domanda
Il nuovo routing ASP.NET è ottimo per gli URL di percorsi semplici ma se si desidera utilizzare un URL come:
http://example.com/items/search ? .xhtml termine = Testo + per + trovare & amp; page = 2
Devi utilizzare un parametro catch all con una convalida?
Soluzione
Tutti gli elementi di dati di visualizzazione che non sono elencati nel percorso vengono automaticamente associati alla stringa di query, quindi se si mappa " items / search.xhtml " ad un'azione:
Search(string term, int page)
Quindi dovresti ottenere i risultati che stai cercando.
Altri suggerimenti
Puoi anche abbinare i parametri di querystring con route, se vuoi catturare tutto ciò che ti serve per aggiungere un parametro in questo modo:
{* contentURL}
Che popolerà il resto dell'URL in quella variabile.
Avevo anche problemi a passare un URL codificato a una route come parametro di route.
Non puoi usare caratteri codificati in URL in un URL, ma puoi in una stringa di query.
Pertanto avevo bisogno che il mio percorso includesse anche un elemento stringa di query.
Dire che ho un percorso:
MapPageRoute("myroute", "myroute/{x}", "~/routehander.aspx")
Ma lo voglio sotto forma di:
http://mywebsite.com/myroute/{x}?url=myurl
Possiamo farlo:
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)
Questo ci reindirizzerebbe al seguente URL:
http://mywebsite.com/myroute/12?url=%252fdefault.aspx
Puoi ancora usare Request.QueryString["some_value"[;