c# Request.Params與Request.QueryString有什麼區別

來源:互聯網
上載者:User
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")。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.