【问题标题】:ASP.NET QueryString without equals sign没有等号的 ASP.NET QueryString
【发布时间】:2012-03-08 16:54:34
【问题描述】:

当我有这样的网址时:

http://www.mysite.com/?MyTest=

MyTest 在请求对象的查询字符串中显示为键。

如果我像这样删除 = 符号:

http://www.mysite.com/?MyTest

它不再显示在查询字符串键(或 AllKeys,如果您愿意)中。

如何判断这个key是否存在?

【问题讨论】:

    标签: asp.net request.querystring


    【解决方案1】:

    这是非常奇怪的行为,如果没有 = 符号,请求返回的 QueryString 对象的计数为 1,值为 MyTest,键为 null。
    您可以测试 QueryString 以查看它是否包含您期望的值:

    if(Request.QueryString.ToString().Contains("MyTest"))
    {
        // Do stuff
    }
    

    编辑:this answer 对无钥匙参数的情况提供了更多解释(滚动过去接受的答案)。

    【讨论】:

    • 由于 contains 方法区分大小写,您可能需要将字符串转换为大写进行比较。 Request.QueryString.ToString().ToUpper().Contains("MYTEST")
    • 根据编辑的答案正确的方法是(Request.QueryString.GetValues(null) ?? new string [0]).Contains("MyTest")
    【解决方案2】:

    我相信你可以做到Request.QueryString[null]Request.QueryString.GetValues(null)


    没有等号 MyTest 不再是键,而是无键值,您可以使用 null 来获取这些值。要检查这两种情况,请执行以下操作:
    bool myTestPresent = Request.QueryString["MyTest"] != null
       || Request.QueryString.GetValues(null).Contains("MyTest", StringComparer.OrdinalIgnoreCase);
    

    【讨论】:

      【解决方案3】:

      你应该使用ToString()函数

      if (Request.QueryString.ToString() == "MyTest")
      {
       //do something
      }
      

      【讨论】:

        猜你喜欢
        • 2018-01-27
        • 2017-02-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2013-06-21
        • 1970-01-01
        相关资源
        最近更新 更多