【发布时间】:2012-03-08 16:54:34
【问题描述】:
当我有这样的网址时:
http://www.mysite.com/?MyTest=
MyTest 在请求对象的查询字符串中显示为键。
如果我像这样删除 = 符号:
它不再显示在查询字符串键(或 AllKeys,如果您愿意)中。
如何判断这个key是否存在?
【问题讨论】:
标签: asp.net request.querystring
当我有这样的网址时:
http://www.mysite.com/?MyTest=
MyTest 在请求对象的查询字符串中显示为键。
如果我像这样删除 = 符号:
它不再显示在查询字符串键(或 AllKeys,如果您愿意)中。
如何判断这个key是否存在?
【问题讨论】:
标签: asp.net request.querystring
这是非常奇怪的行为,如果没有 = 符号,请求返回的 QueryString 对象的计数为 1,值为 MyTest,键为 null。
您可以测试 QueryString 以查看它是否包含您期望的值:
if(Request.QueryString.ToString().Contains("MyTest"))
{
// Do stuff
}
编辑:this answer 对无钥匙参数的情况提供了更多解释(滚动过去接受的答案)。
【讨论】:
(Request.QueryString.GetValues(null) ?? new string [0]).Contains("MyTest")
我相信你可以做到Request.QueryString[null] 或Request.QueryString.GetValues(null)。
null 来获取这些值。要检查这两种情况,请执行以下操作:
bool myTestPresent = Request.QueryString["MyTest"] != null
|| Request.QueryString.GetValues(null).Contains("MyTest", StringComparer.OrdinalIgnoreCase);
【讨论】:
你应该使用ToString()函数
if (Request.QueryString.ToString() == "MyTest")
{
//do something
}
【讨论】: