我只想从 url 获取完整的查询字符串。
Request.QueryString
Request.ServerVariables["QUERY_STRING"]
我可以使用其中任何一种吗?首选哪种方式?
谢谢
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
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 来检索它。
如果您调用 Request.QueryString["Whatever"] ,则会自动执行 UrlDecode。请参阅Request.Querystring 是否自动对字符串进行 url 解码?. 所以要小心你的空格、%20、& 等。
问候,迈克尔