使用C#检查url中是否存在非值查询字符串

Dan*_*ler 11 c# url query-string

我已经看到了一些如何使用C#检查URL中是否存在查询字符串的示例:

www.site.com/index?query=yes

if(Request.QueryString["query"]=="yes")
Run Code Online (Sandbox Code Playgroud)

但是如何在没有参数的情况下检查字符串呢?我只需要看看它是否存在.

www.site.com/index?query

if(Request.QueryString["query"] != null) //why is this always null?
Run Code Online (Sandbox Code Playgroud)

我知道可能有一个简单的答案,我会觉得愚蠢,但我还没有找到它.谢谢!

Ema*_*mad 8

感谢 Ludovic 的回答,这是检查它的最快方法

if(Request.QueryString.GetValues(null)?.Contains("query")??false)
Run Code Online (Sandbox Code Playgroud)


Lud*_*ltz 7

如果您未指定值,Key将自动设置为null,因此您无法检查其存在.

为了检查值是否实际存在,如果它包含您的Key,则可以检查的集合等于null:

Request.QueryString.GetValues(null).Contains("query")
Run Code Online (Sandbox Code Playgroud)


Mik*_*oud 5

它返回null是因为在该查询字符串中它没有该键的值。我认为你正在寻找的支票是这样的:

if(Request.QueryString.Keys.OfType<string>().Any(k => k == "query"))
Run Code Online (Sandbox Code Playgroud)

甚至:

if(Request.QueryString.AllKeys.Any(k => k == "query"))
Run Code Online (Sandbox Code Playgroud)

后者可能更合适,因为该数组已被缓存。