Как проанализировать строку URL с несколькими значениями параметров? - PullRequest
2 голосов
/ 04 ноября 2011

Я создаю этот странный веб-сервис, который получает свои параметры в виде параметров запроса в URL. Проблема в том, что один параметр может иметь несколько значений. Аналогично:

http://mydomain/Service?operation=ActivateUser&id=1&id=2&id=3

В этом случае мне нужно активировать 3 пользователей с идентификаторами 1, 2 и 3. Еще хуже, это может быть так (я думаю, спецификация немного расплывчатая, поясню позже):

http://mydomain/Service?operation=ActivateUser&id=1&operation=DeleteUser&id=2

В этом случае мне нужно активировать пользователя 1 и удалить пользователя 2.

Так что мне действительно нужен анализатор URL, который сохраняет порядок параметров. По умолчанию .NET Request.QueryString этого не делает, он просто разделяет значения запятыми и, черт возьми, с порядком.

Если не считать погружения и разбиения необработанного URL-адреса по?, & И = себе, есть ли лучший способ?

1 Ответ

3 голосов
/ 04 ноября 2011

Звучит так: Request.QueryString.GetValues (то есть NameValueCollection.GetValues ​​) - это то, что вы ищете. Он вернет строковый массив значений, которые он найдет для данного ключа, и в том порядке, в котором они находятся в URL.

Дано http://www.site.com/page.aspx?keyid=1&keyid=2&keyid=3

string[] keys = Request.QueryString.GetValues("keyid");

keys[0] would be "1"
keys[1] would be "2"
keys[2] would be "3"
...