Строковое значение запроса, имеющее «&» - PullRequest
3 голосов
/ 24 февраля 2010

У меня есть строка запроса типа

www.google.com?Department=Education & Finance&Department=Health

У меня есть эти теги li, и их строка запроса выглядит следующим образом:

  • Образование и финансы
  • Здоровье

Теперь проблема в том, что я делаю NamevalueCollection и получаю все ключи: это дает мне только образование, а не финансы .....

Есть идеи, как решить эту проблему?

Ответы [ 3 ]

8 голосов
/ 24 февраля 2010

Вам необходимо кодировать свои значения, вызывая Server.UrlEncode, прежде чем помещать их в URL.

Если ваши значения находятся в массиве, вам нужно использовать цикл. Если вам нужны точные инструкции, вам необходимо показать нам свой текущий код.

6 голосов
/ 24 февраля 2010

Амперсанд (&) - это специальный символ в URL. Таким образом, приведенный выше URL представляется как www.google.com с тремя аргументами: 2 департамента и финансовый отдел.

Попробуйте использовать:

System.Web.HttpUtility.UrlEncode(string url) 

для кодирования URL.

3 голосов
/ 24 февраля 2010

Значения в строке запроса должны быть в кодировке URL. Теперь невозможно определить разницу между символами &, которые разделяют пары значений, и символом & внутри одного из значений. Кроме того, несмотря на то, что большинство браузеров принимают пробелы в URL-адресе, это недопустимо в соответствии со стандартом.

В значение Education & Finance необходимо кодировать пробелы как + или %20, а символ & - как %26, чтобы он стал Education%20%26%20Finance.

Таким образом, правильный URL должен быть:

www.google.com?Department=Education%20%26%20Finance&Department=Health
...