7

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

Request.QueryString 

Request.ServerVariables["QUERY_STRING"]

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

谢谢

4

3 回答 3

8

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

于 2013-05-23T13:55:09.657 回答
1

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.html 指定一个值。index 参数可以是 1 到 Request.QueryString(variable).Count 之间的任何值。如果您引用多个 QueryString 变量之一而不指定索引值,则数据将作为逗号分隔的字符串返回。

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

于 2013-05-23T14:02:12.010 回答
0

如果您调用 Request.QueryString["Whatever"] ,则会自动执行 UrlDecode。请参阅Request.Querystring 是否自动对字符串进行 url 解码?. 所以要小心你的空格、%20、& 等。

问候,迈克尔

于 2013-05-23T14:07:56.277 回答