这是我的问题:
如果我的网址有QueryString ?asdasdafa
,我可以使用以下网址处理:if(HttpContext.Current.Request.QueryString.HasKeys())
但是如果我的url有QueryString ?asdasasfasdas&brand=Sony
,那么它会因null异常而失败,因为它实际上有一个键,而另一个键没有。有没有一种简单的方法来检查
if(HttpContext.Current.Request.QueryString.KeysCount ==
HttpContext.Current.Request.QuesryString.ValuesCount))
答案 0 :(得分:4)
我认为你不需要这样做,做一个简单的空检查就足够了
if(Request.QueryString["asdasdafa"]==null)
{
// value missing
}
asdasdafa
甚至不包含在QueryString中作为其中一个键的事实不会使您的应用程序抛出异常。
修改强>
根据评论,您可以按照以下方式浏览当前的键:
foreach (var item in Request.QueryString.AllKeys)
{
if (Request.QueryString[item] == null)
//value missing
}
答案 1 :(得分:1)
当我运行你的第二个例子时,HttpContext.Current.Request.QueryString.HasKeys()
对我没有失败,asdasasfasdas
是我得到的第一个值,但其关键是null
。您可以通过
NameValueCollection nvc = Context.Request.QueryString;
if (nvc.GetKey(0) == null){}
答案 2 :(得分:0)
我不确定HasKeys是否可以处理,如果没有,编写自己的扩展方法/覆盖HasKeys()怎么样?阅读该方法中的查询字符串并将其拆分为&然后再次使用=在第一个拆分结果的每个项目上。然后返回是或否
答案 3 :(得分:0)
我没有对此进行测试,因此我不知道它是否有效,但您可以尝试检查这些计数:
int keys = Request.QueryString.Keys.Count;
int args = Request.QueryString.Count;
if (keys != args) ...