Есть ли способ получить все пары имя / значение строки запроса в коллекцию? - PullRequest
53 голосов
/ 04 марта 2010

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

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

Ответы [ 5 ]

93 голосов
/ 04 марта 2010

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

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

Вы можете использовать это так:

foreach (String key in Request.QueryString.AllKeys)
{
    Response.Write("Key: " + key + " Value: " + Request.QueryString[key]);
}
10 голосов
/ 04 марта 2010

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

Итак, чтобы ответить на ваш вопрос: да, есть.

7 голосов
/ 15 декабря 2015

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

var qsArray = Request.QueryString.AllKeys
    .Select(key => new { Name=key.ToString(), Value=Request.QueryString[key.ToString()]})
    .ToArray();
6 голосов
/ 04 марта 2010

Если у вас есть строка запроса, представленная ТОЛЬКО в виде строки, используйте HttpUtility.ParseQueryString , чтобы проанализировать ее в коллекции NameValueCollection.

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

2 голосов
/ 04 марта 2010

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

NameValueCollection col = Request.QueryString;

...