UrlEncode tutti i parametri queryString
Domanda
C'è un modo per codificare url l'intero querystring URL senza cercare di UrlEncode ogni singoli parametri querystring. In questo momento sto dover ricostruire la querystring con qualcosa di simile:
foreach (string x in Page.Request.QueryString.Keys)
{
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&";
}
Soluzione
Tutto quello che deve fare è quello di ottenere il seguente valore:
Page.Request.Url.Query
Vedi:
Uri baseUri = new Uri("http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b>");
string queryString = baseUri.Query;
Il parametro queryString
tornerà ?date=today&%3Ca%3E=%3Cb%3E
.
Ancora una modifica - dalla MSDN :
La proprietà query contiene tutte le query informazioni incluse nel URI. domanda informazioni è separato dal percorso le informazioni da un punto interrogativo (?) e continua fino alla fine della URI. Il Informazioni query ha restituito include il punto interrogativo principale.
Le informazioni query è sfuggito secondo RFC 2396 per impostazione predefinita. Se Resource Identifiers internazionali (IRIS) o di dominio internazionalizzati Nome (IDN) l'analisi è attivata, la informazioni query è sfuggito secondo RFC 3986 e RFC 3987.
Altri suggerimenti
Altro che usare string.Format e avendo un extra e alla fine del vostro querystring l'approccio di cui sopra è ottimale.