Подтвердить что ты не робот

Asp.net - пустой параметр QueryString

Проблема

Каков правильный способ проверить параметр foo в следующем запросе url с помощью asp.net? Возможно ли это?

http://example.com?bar=3&foo

Я попытался проверить Request["foo"], а также Request.QueryString["foo"], и я получаю null для обоих. Я также попытался заполнить List значениями из коллекции QueryString, но, как я упоминал ниже, он не включает значение.

Вопрос

Я понимаю, что нет значения, но не должен Request["foo"] возвращать пустую строку, а не null? Есть ли способ узнать, существует ли ключ querystring, даже если он не имеет значения?

Примечания

Я нашел здесь, что Request.QueryString.AllKeys включает null для параметров пустой строки.

[править]

Как указано ниже James и Dreas Regex для синтаксического анализа исходного URL-адреса быть лучшим (и возможно единственным) подходом.

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
4b9b3361

Ответ 1

Вы можете использовать null как ключ для NameValueCollection, и он предоставит вам список имен параметров, разделенных запятыми, которые не имеют значений.

Для http://example.com?bar=3&foo вы должны использовать Request.QueryString[null], и он будет извлекать foo.

Если у вас есть несколько имен параметров без значения, это даст вам значение, разделенное запятой.

Для http://example.com?bar=3&foo&test вы получите foo,test как значение назад.

Update:

Фактически вы можете использовать Request.QueryString.GetValues(null) для получения имен параметров, которые не имеют значений.

Ответ 2

Request.ServerVariables["QUERY_STRING"] вернет строку запроса, заполнив ее как строку. Затем выполните поиск с помощью Regex или IndexOf

Ответ 3

Вы получаете значение null, потому что параметр foo не имеет значения с ним.

... В чем проблема?

Если вы все еще хотите проверить его существование (хотя оно не имеет значения), попробуйте что-то вроде этого:

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;

Ответ 4

Повреждения верны. Переменная "bar" имеет значение, но foo не делает.

Ответ 5

QueryString [ "Bar" ] вернет 3, потому что имеет значение 3, связанное с переменной Bar. Тем не менее, Foo возвращает null, потому что их значение не является, и когда вы вызываете QueryString для переменной или ключа, вы запрашиваете значение, а не ключ, поэтому вы возвращаете null.

Ответ 6

Строка запроса

вероятно, является пустой. Если вы используете Request.Params [""] или повторите его, то вы найдете нужную. Это действительно удобно, чем другие вещи.

Сообщите мне, нужна ли вам помощь.