Управление QueryStrings в .NET - PullRequest
       23

Управление QueryStrings в .NET

0 голосов
/ 21 сентября 2011

Я видел несколько примеров и ответов на StackOverflow, объясняющих, что это был бы рекомендуемый способ создания QueryString для манипуляции.

NameValueCollection test = HttpUtility.ParseQueryString(String.Empty);
test.Add("hello", "world");
Console.WriteLine(test.ToString());

Но все, что он возвращает, это

System.Collections.Specialized.NameValueCollection

В чем дело?Простое консольное приложение .NET4 для тестирования (также пробовал ранее Frameworks).Если я не передаю пустую строку, она начинает работать, но кажется странным, что есть так много сообщений, рекомендующих это как решение.Также обернул его в оператор try / catch, чтобы посмотреть, происходит ли что-то странное, и не выдается никаких исключений.Действительно ли я должен просто дать ему случайную строку «a = b», а затем удалить ее из коллекции NameValueCollection, чтобы получить пригодную для использования коллекцию HttpValueCollection?

Моя конечная цель - использовать это с UriBuilder, захватываяЗапросить у него свойство и передать его в ParseQueryString.Однако иногда может отсутствовать строка запроса, UriBuilder.Query возвращает пустую строку ... таким образом, эта проблема возникла.

РЕДАКТИРОВАТЬ: В случае, если кто-то был сбит с толку, что я намерендля него распечатывается строка запроса, эквивалентная коллекции.Поэтому, если бы я добавил еще одно значение в коллекцию

test.Add("other", "value");

Результат метода ToString () должен быть

"hello=world&other=value"

РЕДАКТИРОВАТЬ ПРИВЕТ ДЭЙВ Мои претензии?Почему это не работает ... enter image description here

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

Ваш код неверен, чтобы распечатать содержание теста, вы должны сделать это:

foreach(string s in test.AllKeys)
{
  Console.WriteLine("{0}-{1}", s, test[s]);
}

Редактировать: Я не понимаю вашу точку зрения Николас, посмотрите эту картинку, яполучить правильный класс HttpValueCollection, также начиная с пустой строки в методе синтаксического анализа и не добавляя ключ приветствия, посмотрите, что мой test.Add закомментирован, а AllKeys пуст.

, поэтому мой test.ToString() возвращается пустыми не System.Collections.Specialized.NameValueCollection, как вы упомянули в своем вопросе.

My debug test

что еще вы хотите / нуждаетесь / спрашиваете / заявляете?; -)

0 голосов
/ 22 сентября 2011

Очевидно, это была давняя ошибка в Mono (что я забыл упомянуть в своем вопросе !!). Я использовал Mono 2.10.5 с MonoDevelop 2.6. Кажется, нет никаких проблем с Microsoft System.Web.

Только что исправили.

...