ASP.NET QueryString没有等号

时间:2012-03-08 16:54:35

标签: asp.net request.querystring

当我有一个网址时:

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

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

如果我删除=符号,如:

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

编辑:this answer提供了一些关于无密钥参数发生情况的更多解释(滚动过去接受的答案)。

答案 1 :(得分:1)

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

<小时/> 如果没有等号MyTest不再是键,而是无键值,则使用null来获取它们。要检查这两种情况,请执行以下操作:

bool myTestPresent = Request.QueryString["MyTest"] != null
   || Request.QueryString.GetValues(null).Contains("MyTest", StringComparer.OrdinalIgnoreCase);

答案 2 :(得分:0)

您应该使用ToString()功能

if (Request.QueryString.ToString() == "MyTest")
{
 //do something
}