2

当我有这样的网址时:

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

MyTest 在请求对象的查询字符串中显示为键。

如果我删除 = 符号,例如:

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

它不再显示在查询字符串键(或 AllKeys,如果您愿意)中。

如何确定此密钥是否存在?

4

3 回答 3

4

这是非常奇怪的行为,如果没有 = 符号,Request 返回的 QueryString 对象的计数为 1,值为 MyTest,键为 null。
您可以测试 QueryString 以查看它是否包含您期望的值:

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

编辑:这个答案对无钥匙参数的情况提供了更多解释(滚动过去接受的答案)。

于 2012-03-08T16:59:31.897 回答
1

我相信你可以做到Request.QueryString[null]Request.QueryString.GetValues(null)


没有等号 MyTest 不再是一个键,而是一个无键值,您可以使用它null来获取这些值。要检查这两种情况,请执行以下操作:

bool myTestPresent = Request.QueryString["MyTest"] != null
   || Request.QueryString.GetValues(null).Contains("MyTest", StringComparer.OrdinalIgnoreCase);
于 2012-03-08T17:35:43.860 回答
0

你应该使用ToString()功能

if (Request.QueryString.ToString() == "MyTest")
{
 //do something
}
于 2012-03-08T17:22:30.443 回答