Другая информация о параметрах запроса
Хотя эта дополнительная информация не является непосредственно частью этого вопроса, она также может оказаться полезной.
Символ Сепаратора
ASP.NET не поддерживает параметры запроса, разделенные ';'
, которые W3C рекомендует , которые серверы поддерживают в качестве альтернативы '&'
.
Параметры, начинающиеся с "="
Параметры запроса, начинающиеся с '='
, считаются имеющими ключ, который будет string.Empty
. Не путайте это с ключом null
. Например, "/some-controller/some-action?=baz"
имеет одно значение, ключ которого string.Empty
и значение baz
.
Более чем один "=" Персонаж
Если имеется более одного '='
символа, ключ - это все до первого '='
, а значение - после него.
Например, "/some-controller/some-action?foo=bar=baz"
имеет один параметр с ключом "foo"
и значением bar=baz
.
Другой пример "/some-controller/some-action?eggs==spam"
имеет один параметр с ключом "eggs"
и значением "=spam"
.
Несколько параметров с одинаковым именем
Также поддерживаются несколько параметров с одним и тем же именем, как указано в моем другом ответе.
Например, если URL-адрес "/some-controller/some-action?foo=bar&foo=baz"
, то результатом Request.QueryString["foo"]
будет `" bar, baz ".
Если вы хотите каждую строку отдельно, используйте Response.QueryString.GetValues("foo")
, которая возвращает массив строк.
* * Пример тысяча сорок-девять
Считается, что следующий крайне неосуществимый URL имеет шесть параметров:
"/some-controller/some-action?=baz&foo=bar&edit&spam=eggs=ham&==&"
Это:
+--------------+--------------+
| Key | Value |
+--------------+--------------+
| string.Empty | "baz" |
| "foo" | "bar" |
| null | "edit" |
| "spam" | "eggs=ham" |
| string.Empty | "=" |
| null | string.Empty |
+--------------+--------------+