Есть ли способ получить все пары имя / значение строки запроса в коллекции?
Я ищу встроенный способ в .net, если нет, я могу просто разделить на & и загрузить коллекцию.
Да, используйте коллекцию HttpRequest.QueryString:
HttpRequest.QueryString
Получает коллекцию переменных строки HTTP-запроса.
Вы можете использовать это так:
foreach (String key in Request.QueryString.AllKeys) { Response.Write("Key: " + key + " Value: " + Request.QueryString[key]); }
Ну, Request.QueryString уже есть коллекция. В частности, это NameValueCollection. Если ваш код работает в ASP.NET, это все, что вам нужно.
Request.QueryString
NameValueCollection
Итак, чтобы ответить на ваш вопрос: да, есть.
Вы можете использовать LINQ для создания списка анонимных объектов, к которым вы можете обращаться в массиве:
var qsArray = Request.QueryString.AllKeys .Select(key => new { Name=key.ToString(), Value=Request.QueryString[key.ToString()]}) .ToArray();
Если у вас есть строка запроса, представленная ТОЛЬКО в виде строки, используйте HttpUtility.ParseQueryString , чтобы проанализировать ее в коллекции NameValueCollection.
Однако, если это часть HttpRequest, используйте уже проанализированное свойство QueryString вашего HttpRequest.
QueryString свойство в HttpRequest классе на самом деле NameValueCollection класса.Все, что вам нужно сделать, это
QueryString
HttpRequest
NameValueCollection col = Request.QueryString;