ASP.NET QueryString без знака равенства - PullRequest
2 голосов
/ 08 марта 2012

Когда у меня есть URL, например:

http://www.mysite.com/?MyTest=

MyTest отображается в качестве ключа в строке запроса объекта запроса.

Если я удаляю =подписать как:

http://www.mysite.com/?MyTest

Он больше не отображается в ключах строки запроса (или AllKeys, если вы предпочитаете).

Как определить, существует ли этот ключ илинет?

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Это довольно странное поведение, без знака = объект QueryString, возвращаемый запросом, имеет значение счетчика 1 со значением MyTest и ключом ноль.
Вы можете проверить QueryString, чтобы увидеть, содержит ли оно ожидаемое вами значение:

if(Request.QueryString.ToString().Contains("MyTest"))
{
    // Do stuff
}

Редактировать: этот ответ дает немного больше объяснений того, что происходит с параметрами без ключа (прокрутите мимо принятого ответа).

1 голос
/ 08 марта 2012

Я считаю, что вы можете сделать Request.QueryString[null] или Request.QueryString.GetValues(null).Без знака равенства MyTest больше не является ключом, а значением без ключа, вы используете null для их получения.Для проверки обоих случаев сделайте следующее:

bool myTestPresent = Request.QueryString["MyTest"] != null
   || Request.QueryString.GetValues(null).Contains("MyTest", StringComparer.OrdinalIgnoreCase);
0 голосов
/ 08 марта 2012

Вы должны использовать ToString() функцию

if (Request.QueryString.ToString() == "MyTest")
{
 //do something
}
...