Есть ли способ получить все пары имени / значения querystring в коллекции?

Есть ли способ получить все пары имени / значения querystring в коллекции?

Я ищу встроенный способ в .net, если нет, я могу просто разделить на & и загрузить коллекцию.

Да, используйте коллекцию HttpRequest.QueryString :

Получает набор переменных строки запроса HTTP.

Вы можете использовать его следующим образом:

 foreach (String key in Request.QueryString.AllKeys) { Response.Write("Key: " + key + " Value: " + Request.QueryString[key]); } 

Ну, Request.QueryString уже является коллекцией. В частности, это NameValueCollection . Если ваш код работает в ASP.NET, это все, что вам нужно.

Поэтому, чтобы ответить на ваш вопрос: Да, есть.

Если у вас есть querystring ONLY, представленный как строка, используйте HttpUtility.ParseQueryString, чтобы проанализировать ее в NameValueCollection.

Однако, если это часть HttpRequest, используйте уже обработанное свойство QueryString вашего HttpRequest.

Вы можете использовать LINQ для создания списка анонимных объектов, к которым вы можете получить доступ в массиве:

 var qsArray = Request.QueryString.AllKeys .Select(key => new { Name=key.ToString(), Value=Request.QueryString[key.ToString()]}) .ToArray(); 

Свойство QueryString в classе HttpRequest самом деле является classом NameValueCollection . Все, что вам нужно сделать, это

NameValueCollection col = Request.QueryString;

Давайте будем гением компьютера.