【问题标题】:Empty QueryString parameter空 QueryString 参数
【发布时间】:2008-12-30 14:20:28
【问题描述】:

问题

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

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

我尝试检查Request["foo"]Request.QueryString["foo"],我得到null 两者。我还尝试使用 QueryString 集合中的值填充 List,但正如我在下面提到的,它不包含该值。

问题

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

注意事项

我发现here Request.QueryString.AllKeys 包含null 用于空白查询字符串参数。

[编辑]

正如JamesDreas 所述,解析原始网址的正则表达式可能是最好的(也可能是唯一的)方法。

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")

【问题讨论】:

  • 检查查询字符串是否存在但为空的意义何在?它的价值(实际上缺乏价值)同样没用。
  • @Dreas,我假设有一个隐含的“=true”在起作用(而完全没有 foo 参数是隐含的“foo=false”)
  • bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ?真假; //即使没有值也会返回true

标签: asp.net query-string


【解决方案1】:

您可以使用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) 来获取没有值的参数名称。

【讨论】:

  • 完美!这正是我一直在寻找的。很好的答案。
  • 真的迟到总比没有好... :-)
【解决方案2】:

Request.ServerVariables["QUERY_STRING"] 将完整的查询字符串作为字符串返回。然后使用 Regex 或 IndexOf 搜索它

【讨论】:

    【解决方案3】:

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

    ...到底是什么问题?

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

    bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
    

    【讨论】:

    • 我想检查一个查询字符串键值,即使它没有值。我已经相应地更新了问题。
    【解决方案4】:

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

    【讨论】:

    • 对,foo 没有任何价值。但是,除了原始 url 之外,我找不到对 foo 的引用。空白参数仍然是一个参数。
    【解决方案5】:

    QueryString["Bar"] 将返回 3,因为它具有与变量 Bar 关联的值 3。但是,Foo 将返回 null,因为它们没有值,并且当您在变量或键上调用 QueryString 时,您查询的是值,而不是键,这就是您返回 null 的原因。

    【讨论】:

      【解决方案6】:

      查询字符串可能是一种浪费。如果您使用 Request.Params[""] 或对其进行迭代,那么您将找到您想要的。它真的比其他东西好用。

      如果您需要任何帮助,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多