27

问题

检查foo公司使用asp.net的以下url查询字符串中的参数?这可能吗?

http://example.com?bar=3&foo

我试过检查请求[“foo”]以及请求。QueryString[“foo”]我得到了无效的对于这两种情况。我还尝试填充列表使用来自查询字符串集合,但正如我在下面提到的,它不包括价值。

问题

我知道没有价值,但不应该请求[“foo”]返回空字符串,而不是无效的? 有没有办法找出一个查询字符串键是否存在,即使它没有值?

笔记

我找到了在这里那个请求。查询字符串.AllKeys包括无效的用于空白查询字符串参数。

[编辑]

如下所述詹姆斯德拉斯解析原始url的Regex可能是最好的(也可能是唯一的)方法。

Regex公司。IsMatch(Request.RawUrl,“[?&]thumb([&=]|$)”)
  • 检查查询字符串是否存在但为空有什么意义?它的价值(实际上缺乏价值)也是无用的。 评论 2008年12月30日14:29
  • 1
    @Dreas,我假设工作中存在隐含的“=true”(而完全没有foo参数则是隐含的“foo=false”) 评论 2008年12月30日14:32
  • bool doesFooExist=请求。Url。AbsoluteUri.IndexOf(“foo=”)>=0?真:假//将返回true,即使它没有值 评论 2008年12月30日14:34

6个答案6

重置为默认值
45

你可以使用无效的作为名称值集合它将为您提供一个以逗号分隔的没有值的参数名列表。

对于http://example.com?bar=3&foo你会用请求。QueryString[空]它会恢复foo公司.

如果有多个参数名没有值,它将为您提供一个以逗号分隔的值。

对于http://example.com?bar=3&foo&test你会得到foo,测试作为返回值。

更新:

你实际上可以使用请求。QueryString.GetValues(空)获取没有值的参数名。

1
  • 我想真的迟到总比从不好……:-)
    – 乔尔夫
    评论 2010年9月7日14:28
9

请求。服务器变量[“QUERY_STRING”]将返回完整的查询字符串作为字符串。然后使用Regex或IndexOf进行搜索

7

您得到null是因为foo公司参数没有值。

……到底是什么问题?

如果您仍然想检查它是否存在(尽管它缺少值),请尝试如下操作:

bool doesFooExist=请求。Url。AbsoluteUri.IndexOf(“foo=”)>=0?真:假;
1
  • 我想检查查询字符串键值,即使它没有值。我已经相应地更新了问题。
    – 布拉德
    评论 2008年12月30日14:26
0

Dreas是正确的。变量“bar”有一个值,但foo没有。

1
  • 没错,foo没有值。然而,除了在原始url中,我找不到对foo的引用。然而,空白参数是一个参数。
    – 布拉德
    评论 2008年12月30日14:27
0

QueryString[“Bar”]将返回3,因为它具有与变量Bar关联的值3。然而,Foo将返回null,因为它们没有值,并且当您对变量或键调用QueryString时,您查询的是值,而不是键,所以这就是为什么您返回null的原因。

0

查询字符串可能是浪费的。如果您使用请求。参数[“”]或迭代它,然后您将找到所需的参数。它真的比其他东西方便。

如果你在这方面需要帮助,请告诉我。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.