urlencode все параметры строки запроса - PullRequest
4 голосов
/ 14 июля 2009

Есть ли способ URL-кодирования всей строки запроса URL, не пытаясь кодировать каждый отдельный параметр строки запроса. Сейчас мне нужно перестроить строку запроса примерно так:

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

Ответы [ 2 ]

6 голосов
/ 14 июля 2009

Все, что вам нужно сделать, это получить следующее значение:

Page.Request.Url.Query

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

Параметр queryString вернет ?date=today&%3Ca%3E=%3Cb%3E.

Еще одно редактирование - от MSDN :

Свойство Query содержит любой запрос информация, включенная в URI. запрос информация отделена от пути информация знаком вопроса (?) и продолжается до конца URI. возвращаемая информация запроса включает ведущий знак вопроса.

Информация о запросе экранирована в соответствии с RFC 2396 по умолчанию. Если Международные идентификаторы ресурсов (IRIs) или интернационализированный домен Разбор имени (IDN) включен, информация запроса экранируется в соответствии с к RFC 3986 и RFC 3987.

0 голосов
/ 14 июля 2009

Кроме использования string.Format и наличия дополнительного & в конце вашей QueryString, вышеприведенный подход является оптимальным.

...