使用asp.net检查以下网址查询字符串中foo
参数的正确方法是什么?这甚至可能吗?
http://example.com?bar=3&foo
我已尝试检查Request["foo"]
以及Request.QueryString["foo"]
,我得到null
。我还尝试使用List
集合中的值填充QueryString
,但正如我在下面提到的,它不包含值。
我知道没有价值,但Request["foo"]
不应该返回空字符串而不是null
?有没有办法找出是否存在查询字符串密钥,即使它没有值?
我发现here Request.QueryString.AllKeys
包含null
空白查询字符串参数。
正如下面James和Dreas所述,解析原始网址的正则表达式可能是最好的(也可能是唯一的)方法。
Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
答案 0 :(得分:43)
您可以使用null
作为NameValueCollection
的密钥,它会为您提供逗号分隔的没有值的参数名称列表。
对于http://example.com?bar=3&foo
,您可以使用Request.QueryString[null]
,它会检索foo
。
如果您有多个没有值的参数名称,它将为您提供逗号分隔的值。
对于http://example.com?bar=3&foo&test
,您将获得foo,test
作为值。
<强>更新强>
您实际上可以使用Request.QueryString.GetValues(null)
来获取没有值的参数名称。
答案 1 :(得分:8)
Request.ServerVariables["QUERY_STRING"]
将以字符串形式返回查询字符串complete。然后使用Regex或IndexOf
答案 2 :(得分:7)
您得到null,因为foo
参数没有值。
......究竟是什么问题?
如果你仍然想检查它的存在(尽管它没有值),试试这样的事情:
bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
答案 3 :(得分:0)
Dreas是对的。变量“bar”有一个值,但foo没有。
答案 4 :(得分:0)
QueryString [“Bar”]将返回3,因为它具有与变量Bar关联的值3。但是,Foo将返回null,因为它们没有值,当您在变量或键上调用QueryString时,您正在查询值,而不是键,因此这就是您返回null的原因。
答案 5 :(得分:0)
查询字符串可能是一个浪费的。如果你使用Request.Params [“”]或迭代它,那么你会找到你想要的。它比其他东西更方便。
如果您需要任何帮助,请告诉我。