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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

NameValueCollection col = Request.QueryString;