2009-07-14 7 views
4

Existe-t-il un moyen d'encoder l'URL de la chaîne de requête de l'URL dans son intégralité sans essayer d'encoder chaque paramètre de la chaîne de requête. En ce moment, je vais avoir à reconstruire le querystring avec quelque chose comme ceci:urlencode tous les paramètres de la chaîne de requête

foreach (string x in Page.Request.QueryString.Keys) 
{ 
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&"; 
} 

Répondre

6

Tout ce que vous devriez faire est d'obtenir la valeur suivante:

Page.Request.Url.Query 

Voir: paramètre

 
    Uri baseUri = new Uri(" http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b&gt ;"); 
    string queryString = baseUri.Query; 

The queryString retournera ?date=today&%3Ca%3E=%3Cb%3E.

Encore une édition - du MSDN:

La propriété requête contient une requête information contenue dans l'URI. Requête informations est séparé du chemin informations par un point d'interrogation (?) Et continue à la fin de l'URI. Les informations de requête renvoyées incluent le point d'interrogation principal. L'information de requête est échappée selon la RFC 2396 par défaut. Si Resource Identifiers internationale (ou) IRIs nom de domaine internationalisé (IDN) analyse syntaxique est activée, les informations de requête est échappé selon à la RFC 3986 et RFC 3987.

+0

Cela vous donnera toute la QueryString actuelle, cependant si vous y exécutez URLEncode, vous perdrez vos valeurs puisque les esperluettes (&) seront remplacées par des versions sans URL. –

+0

Pas besoin d'y exécuter UrlEncode. – Alex

+0

Il n'y a pas de .Query mais cela semble fonctionner parfaitement: Page.Request.Url.AbsoluteUri –

0

autres que l'utilisation string.Format et vous avoir un & supplémentaire à la fin de votre QueryString l'approche ci-dessus est optimale.

Questions connexes