Request.QueryString:获取 HTTP 查询字符串变量集合。一般是获取Get方式提交的数据,包含由客户端发送的查询字符串变量的集合。
例如,如果请求URL 为 http://www.cnblogs.com/errorif/posts.aspx?id=44,则 System.Web.HttpRequest.QueryString 的值为“id=44”。
Request.Form:获取窗体变量集合。一般是获取以Form形式Post提交的数据
Request:从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,Cookie最后是ServerVariables。Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止。
其实现代码为:
1 public string this[string key]
2 {
3 get
4 {
5 string str = this.QueryString[key];
6 if (str != null)
7 {
8 return str;
9 }
10 str = this.Form[key];
11 if (str != null)
12 {
13 return str;
14 }
15 HttpCookie cookie = this.Cookies[key];
16 if (cookie != null)
17 {
18 return cookie.Value;
19 }
20 str = this.ServerVariables[key];
21 if (str != null)
22 {
23 return str;
24 }
25 return null;
26 }
27 }
28
2 {
3 get
4 {
5 string str = this.QueryString[key];
6 if (str != null)
7 {
8 return str;
9 }
10 str = this.Form[key];
11 if (str != null)
12 {
13 return str;
14 }
15 HttpCookie cookie = this.Cookies[key];
16 if (cookie != null)
17 {
18 return cookie.Value;
19 }
20 str = this.ServerVariables[key];
21 if (str != null)
22 {
23 return str;
24 }
25 return null;
26 }
27 }
28
我们来分析下.
假设有个页面 test.aspx?id=111
这里我们的页面是用GET的方法.这时用Request.QueryString("id")与Request("id")是一样得,应该如果不指定REQUEST得集合,首先就会从QueryString搜索.
而如果我们的页面是用的是POST的方法发送数据给test.asp,那么用Request.QueryString("id")是不行的了(他只能取GET),而要用Request.From("id"),而如果还用Request("id")他也能取到数据,但先检测QuerySstring的值,显然速度就慢了.
下面是个检测的例子:
<%
If Request("submit")<>"" then
Response.Write "直接取:"& Request("username") & "<br>"
Response.Write "取Get:" & Request.QueryString("username") & "<br>"
Response.Write "取Post:" & Request.Form("username") & "<br>"
End if
%>
<form name=form1 action="" method=post>
<input type=test name="username" value="postuser">
<input type=submit name="submit" value="test">
</form>
If Request("submit")<>"" then
Response.Write "直接取:"& Request("username") & "<br>"
Response.Write "取Get:" & Request.QueryString("username") & "<br>"
Response.Write "取Post:" & Request.Form("username") & "<br>"
End if
%>
<form name=form1 action="" method=post>
<input type=test name="username" value="postuser">
<input type=submit name="submit" value="test">
</form>
对的就做,做的就对