Строка запроса не работает, амперсанды преобразованы в% 20 - PullRequest
0 голосов
/ 10 февраля 2012

У меня возникает следующая проблема в C #, когда я передаю значения с строкой запроса из электронного письма, например:

http://www.website.com? Firstname = Joe & фамилия = Среднее

Значения отображаются на веб-сайте следующим образом:

http://www.website.com? Firstname% 3d% 24Joe% 24% 26lastname% 3d% 24Среднее

Таким образом, в основном URL-адресакодируются, но некоторые части не должны кодироваться.Я пробовал & вместо &, но тоже не повезло.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Любые значения, передаваемые в / из URL, должны быть Url Encoded / Decoded.С другой стороны, при отображении текста на странице (HTML) вы должны использовать HtmlEncode.

. Методы можно найти в пространстве имен System.Web:

  • HttpUtility.UrlEncode.
  • HttpUtility.UrlDecode.
  • HttpUtility.UrlHtmlEncode.

и т. Д.

Надеюсь, что поможет.

0 голосов
/ 10 февраля 2012

Вы кодируете всю строку запроса, а не только их значения .Вы должны сделать что-то вроде

var values = new Dictionary<string, string>();
values.Add("firstname", "Joe");
values.Add("lastname", "Average");
var querystring = String.Join("&", values.Select(pair => 
    pair.Key + "=" + HttpUtility.UrlEncode(pair.Value)).ToArray());
...