【问题标题】:what is difference between Request.QueryString and Request.ServerVariables["QUERY_STRING"]Request.QueryString 和 Request.ServerVariables["QUERY_STRING"] 有什么区别
【发布时间】:2013-05-18 22:09:17
【问题描述】:

我只想从 url 获取完整的查询字符串。

Request.QueryString 

Request.ServerVariables["QUERY_STRING"]

我可以使用其中任何一种吗? 首选哪种方式?

谢谢

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    Request.ServerVariables["QUERY_STRING"] 包含整个查询字符串,即问号之后但片段标识符# 之前的所有内容

    http://msdn.microsoft.com/en-us/library/ms525396(v=vs.90).aspx

    Request.QueryString 包含一个允许您获取单个元素的集合。 使用以下语法:

    Request.QueryString(variable)[(index)|.Count]
    

    此集合是从 ServerVariables 集合生成的。此集合中的值会自动进行 UrlDecoded。

    因此,如果您调用Request.QueryString.ToString(),它本质上与Request.ServerVariables["QUERY_STRING"] 相同,但带有UrlDecoding。
    所以你应该使用它,因为它更安全。

    Request.QueryString(variable)[(index)|.Count]
    

    http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx

    【讨论】:

    【解决方案2】:

    http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx

    QueryString 集合是 ServerVariables 集合中 QUERY_STRING 变量的解析版本。它使您能够按名称检索 QUERY_STRING 变量。 Request.QueryString(parameter) 的值是 QUERY_STRING 中出现的所有参数值的数组。您可以通过调用 Request.QueryString(parameter).Count 来确定参数值的数量。如果一个变量没有与之关联的多个数据集,则计数为 1。如果未找到该变量,则计数为 0。

    要在多个数据集中的一个中引用 QueryString 变量,您需要为索引指定一个值。 index 参数可以是 1 到 Request.QueryString(variable).Count 之间的任何值。如果您引用多个 QueryString 变量之一而不指定索引值,则数据将作为逗号分隔的字符串返回。

    当你在Request.QueryString中使用参数时,服务器会解析发送给请求的参数并返回指定的数据。如果您的应用程序需要未解析的 QueryString 数据,您可以通过不带任何参数调用 Request.QueryString 来检索它。

    【讨论】:

      【解决方案3】:

      如果您调用 Request.QueryString["Whatever"] ,则会自动执行 UrlDecode。见does Request.Querystring automatically url decode a string?。所以要小心你的空格、%20、& 等。

      问候, 迈克尔

      【讨论】:

        猜你喜欢
        • 2011-01-14
        • 2011-09-26
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多