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?

È stato utile?

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"[;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top