request.params 傳值問題
2009-06-01 14:02:22| 分類: asp.net
| 標籤: |字型大小大中小 訂閱
request.params其實是一個集合,它依次包括request.querystring、request.form、request.cookies和request.servervariables。
如果要在兩個頁面傳遞資料的話,只能用request.querystring、request.form、request.cookies
Request.Params 是在 QueryString、Form、Server Variable 以及 Cookies 找資料,
他首先在 QueryString 集合尋找資料,如果在 QueryString 找到資料,就返回資料,如果沒有找到就去 Form 集合中尋找資料,找到就返回,否則在往下一下個集合尋找資料。
Request.Params["id"]
Request.Form["id"]
Request.QueryString["id"]
的用法以及區別?
Request.Params是所有post和get傳過來的值的集合,Request.Form是取post傳
javascript使用的是'name'
錯誤的Javascript可以導致Form傳值出錯
===========================================
.net下的Request對象的一個作用就是擷取用戶端提交的資料,大家對它也是非常熟悉的。雖然如此,但有幾種寫法的不同可能未必人人都能理解的。
strMessage = Request("msg")
strMessage = Request.Form("msg")
而且好多人寫的代碼,一律都是Request("")的寫法,當然這樣的寫法並沒有什麼錯。
而不管對於哪種集合其實都是可以通過Request("")這樣直接取得的,這裡就有一個問題,如果Get方式和Post方式提交了同樣的一個變數,比如username=sunny,那麼你用Request("username")取出來的到底是Get過來的資料還是Post過來的資料呢?只是大家應該注意Request對象有幾個集合來擷取用戶端提交的資料,一般常用的是QueryString,Form和ServerVariables。
下面我舉個例子來說明這個問題:
首先建立一個html頁面:index.html
<html>
<head>
<title></title>
</head>
<body>
<p>請填寫你的優點</p>
<form method="POST" action="Search.aspx?hobby=0000">
<p>
<input type="text" name="hobby" size="20"><br>
<input type="checkbox" name="hobby" value=" 正義">正義<input type="checkbox" name="hobby" value=" 老實 ">老實
</p>
<p><input type="submit" value=" 確定 " name="B1"><input type="reset" value=" 重填 " name="B2">
</p>
</form>
</body></html>
建立新的頁面Search.aspx,頁面什麼都不需要,這裡只是說明個問題就是得,後台代碼如下:
Code
String str1=Requet.Form["hobby"]
String str2=requet.QueryString["hobby"]
String str3=request.Params["hobby"]
String str4=request.ServerVariables["hobby"]
String str5=request["hobby"]
我在index.html頁面上輸入了"長得帥",又在下面的兩個checkbox都選擇了,單擊按鈕提交資料到Search.aspx頁面
Str1=“長得帥,正義,老實”
Str2="0000";
Str3=”0000,長的帥,正義,老實”
Str4="";
tr5=”0000”;
所以,問題到了這裡,大家就應該想到了, Request從這幾個集合取資料是有順序的,從前到後的順序依次是 QueryString,Form,最後是ServerVariables。
Request.Form實際上是擷取由form方式提交的資料
Request.QueryString實際上是擷取由get方式提交的資料。
Request.Params則是由幾部分組成:擷取QueryString+Form+ServerVariable+Cookies的集合.所以上面的例子str3=request[“hobby”]取到的就是有這幾個組成的集合。
Request.Servervariables則是擷取用戶端相關的資訊,如IE類型,IP地址等等。
Request對象按照這樣的順序依次搜尋這幾個集合中的變數,如果有符合的就中止,後面的就不管了。所以上面的例子str5=Request["hobby"]取到的實際是Get方法提交的資料。
所以為了提高效率,減少無謂的搜尋時間,同時也是為了程式的規範,建議大家還是用Request.集合的方式更好一點,比如Request.Form("hobby")。