Как проверить, имеет ли значение QueryString Values ​​то же значение, что и количество ключей - PullRequest
3 голосов
/ 16 ноября 2011

Вот моя проблема:

Если у моего URL есть QueryString ?asdasdafa, я могу справиться с этим: if(HttpContext.Current.Request.QueryString.HasKeys())

Но если у моего URL-адреса есть QueryString ?asdasasfasdas&brand=Sony, тогда он потерпит неудачус нулевым исключением, потому что фактически имеет один ключ, а другой - нет.Есть ли простой способ проверить

if(HttpContext.Current.Request.QueryString.KeysCount ==
HttpContext.Current.Request.QuesryString.ValuesCount))

Ответы [ 4 ]

4 голосов
/ 16 ноября 2011

Я не думаю, что вам нужно это делать, достаточно просто выполнить нулевую проверку

if(Request.QueryString["asdasdafa"]==null)
{
   // value missing
}

Тот факт, что asdasdafa даже не включен в качестве одного из ключей в QueryString, не заставит ваше приложение выдавать исключение.

EDIT

Основываясь на комментарии, вы можете просмотреть имеющиеся ключи следующим образом:

foreach (var item in Request.QueryString.AllKeys)
{
   if (Request.QueryString[item] == null)
                //value missing

}
1 голос
/ 16 ноября 2011

Когда я запускаю твой второй пример, HttpContext.Current.Request.QueryString.HasKeys() для меня не терпит неудачу, и asdasasfasdas - первое полученное мной значение, но его ключ равен null. Вы можете проверить, является ли ключ нулевым

NameValueCollection nvc = Context.Request.QueryString;
if (nvc.GetKey(0) == null){}
0 голосов
/ 16 ноября 2011

Я не проверял это, поэтому я не знаю, работает ли он, но вы можете попробовать проверить по следующим показателям:

int keys = Request.QueryString.Keys.Count;
int args = Request.QueryString.Count;

if (keys != args) ...
0 голосов
/ 16 ноября 2011

Я не уверен, может ли HasKeys справиться с этим, если нет, как насчет написания вашего собственного метода расширения / переопределения HasKeys ()?Прочитайте строку запроса в этом методе и разделите ее с помощью &, а затем снова с = на каждый элемент первого результата разделения.Затем верните Да или Нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...