<<<返回

多参数以及多值的Query字段处理
你可以通过Query字段传递不止一个键值对，在传递多个参数时，仅需要使用连接符(&)就可以了。下面的例子传递了两个参数： <a href=“response.asp?firstparam=<%=Server.URLEncode(“This is the first parameter.”)%>&<Secondparam=<%=Server.URLEncode(“This is the second parameter.”)%>“>点击这里</a> 这个连接的Query字段就包括了两个参数（键值对），键名分别是FirstParam和SecondParam。值分别对应于”This is the first parameter.”和”This is the second parameter.”, URLEncode()方法被用来将这些值在传递中保持正确格式。
在Response.asp中，你可以用下面的方法显示两个参数：
<p><%=Request.QueryString(“FirstParam”)%>
<p><%=Request.QueryString(“SecondParam”)%>
可以看出，接受信息还是老方法，输出结果为：
This is the first parameter.
This is the second parameter.
你一样可以利用一个参数对应多个值，只需要在query字段中将参数名称写多遍就可以了，例如下面这个例子：
<A HREF=“response.asp?OnlyParam=<%=Server.URLEncode(“This is the first value of the only parameter.”)%>&OnlyParam=<%=Server.URLEncode(“This is the second value of the only parameter.”)%>“>点击这里</a>
在这里面，参数（键）OnlyParam对应于两个值，分别是This is the first value of the only parameter.”和“This is the second value of the only parameter.”，那么Count属性又可以在这里面来检查到底有多少个值，同时下面的例子用For Each来显示所有的值。
这个OnlyParam参数有<%=Request.QueryString(“OnlyParam”).Count%>个值，
<p>分别是：
<%
FOR EACH pvalue IN Request.QueryString(“OnlyParam”)
Response.Write(“<br>“&pvalue)
NEXT
%>
FOR EACH循环会将所有值全部显示出来，如果这个参数是不存在的，那么count属性会显示0个值同时循环不会执行。
将QueryString集合所有参数一并输出
和Form传递参数十分类似，你可以选择三种方法，下面的脚本是利用For Each循环：
<%
FOR EACH QSParam IN Request.QueryString
Response.Write(“<br>&QSParam&”=“)
Response.Write(Request.QueryString(QSParam)
NEXT
%>
除了使用FOR EACH循环外，你还可以使用FOR...NEXT循环来进行这种操作。这样的话，首先需要利用Count属性来了解具体值的数量，下面这个例子：
<%
FOR I=1 TO Request.QueryString.Count
Response.Write(“<BR>“&Request.QueryString(i))
NEXT
%>
最终，你还可以利用最简单的方法来接受没有解码的Query字段。见下面这个例子：
<%=Request.QueryString%>
显示结果为：
FirstParam=This+is+the+first+parameter%2E&SecondParam=This+is+the+second+parameter%2E
注：其实你还可以利用Server变量QUERY_STRING来接受没有解码的Query字段。第十四章中有所介绍。
什么情况下不要使用Query字段
Query字段在主页间传递参数时是非常有用的，但是两种场合还是不要使用。一种是传递隐含信息，另一种是传递大量信息。
从某种意义上说，Query字段是根本无法隐含的，它总是显示这些Query字段。这就意味着如果用来传递用户密码就十分糟糕，任何人如果在旁边路过并瞥了一眼都是很危险的。
如果传递的数据量比较大，用Query字段也不好办，对于不同的浏览器，这种信息传递的大小是有不同的限制的，例如IE4.0是无法处理超过2000个字符的query字段。如果URL连接带的Query字段超过这个长度，浏览器就无法正确处理。
你有时无法确认长度具体有多少，因为实际上对于浏览器限制的长度是指浏览器地址栏中所能显示并发送的最大长度，也就是URL地址和Query字段的总长度。
另外，在进行Encode操作中，还有一些诸如“%2E”这样的附加的字符。这种长度的添加也必须在浏览器长度限制之内。
再有，很多浏览器所限定的长度还远远达不到IE4.0的2000个字符的限制，尤其是早期的版本，因此，一般说来，如果传递数据量比较大，就不要利用这种方式了。
作为总结，利用Query字段传递的信息都应当是简洁的和非保密的，如果有大量数据需要传递，那么可以利用HTTP的Form中的hidden类型，详细介绍参看有关HTML的介绍。在这里值得解释的是，HTTP协议在传递form时比传递Query字段有效的多。