Asp.net - 空QueryString参数

bra*_*rad 24 asp.net query-string

问题

foo使用asp.net 检查以下url的查询字符串中的参数的正确方法是什么?这甚至可能吗?

http://example.com?bar=3&foo
Run Code Online (Sandbox Code Playgroud)

我试图检查Request["foo"]以及Request.QueryString["foo"]和我得到null两个.我也尝试List使用QueryString集合中的值填充a ,但正如我在下面提到的,它不包括值.

问题

我明白没有价值,但不应该Request["foo"]返回空字符串而不是null?有没有办法找出一个查询字符串密钥是否存在,即使它没有值?

笔记

我发现这里Request.QueryString.AllKeys包含null空白的查询字符串参数.

[编辑]

如下面由JamesDreas所述,正则表达式解析原始URL可能是最好的(也可能是唯一的)方法.

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
Run Code Online (Sandbox Code Playgroud)

joe*_*lvh 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)用来获取没有值的参数名称.


Jam*_*ran 8

Request.ServerVariables["QUERY_STRING"]将返回查询字符串,完成,作为字符串.然后使用Regex或IndexOf进行搜索


And*_*ech 7

你得到null因为foo参数没有值.

......究竟是什么问题?

如果您仍想检查它的存在(虽然它缺少值),请尝试以下方法:

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
Run Code Online (Sandbox Code Playgroud)