在ASP.NET中,用戶端的動態互動是通過Response和Request對象實現的,這兩個對象起到了伺服器和用戶端
之間的資訊傳播作用,其中Response對象用於接收用戶端瀏覽器提交的資料,而Request對象的功能則是將服務端的
資料發送到用戶端瀏覽器。
由於ASP.NET頁包含對System.Web命名空間(包含HttpContext類)的預設引用(using System.Web)。Page類、
HttpRequest類和HttpResponse類別關係如下圖所示。當載入一個page頁的時候,同時也引用了HettpRequest類和
HttpResponse類。兩個類作為page的屬性Request和Response存在,這樣我們在page_load的方法下就可以直接使用
page的屬性Request對象和Response對象 。
一 Request對象
request對象可以用於訪問人任何用HTTP請求的傳遞的資訊,包括從HTML表單的POST方法或GET方法傳遞的參
數、Cookie和使用者認證。下面介紹幾個常用的屬性。 1 屬性 1)Form
擷取表單中變數的集合。其實它就是一個容器,將網頁間需要傳遞的資訊存放在Form中,網頁接收即可。當
method的屬性值為POST或GET時,所有作為請求提交的<form>段中的HTML控制項/WEB控制項單元的值的組合,每個
成員均為唯讀。下面用代碼實現兩個方法:
<!--使用post方法--> <form id="form2" runat="server" method="post"> <!--使用get方法--> <form id="form1" runat="server" method="get">
//使用Post的方式獲得Form表單 protected void btnOK_Click(object sender, EventArgs e) { string name; name = Request.Form["TextBox1"]; Response.Write(name);//使用Get方式獲得Form表單 protected void btnOK_Click(object sender, EventArgs e) { string name; name = Request.QueryString ["TextBox1"]; Response.Write(name); }
2)QueryString
依附於使用者請求的URL後面的名稱/數值或作為請求提交的且method屬性值為Get的值。關於method=“get”具體的
例子見上。Querystring檢索HTTP查詢字串變數的值,HTTP查詢字串有問號後的值制定。常用於頁面跳轉時,
參數的傳遞。具體代碼展示:
protected void btnOK_Click(object sender, EventArgs e) { Response.Redirect("Vote_ShowResult.aspx?voteid=" + this.masterID); }
二 Response對象
Response對象用於系那個客戶瀏覽器發送伺服器的資料。使用者可以使用該對象將伺服器端的資料用HTML的格
式發送到用戶端瀏覽器。該對象的功能與Request對象的功能相反,Request對象用於得到使用者提交的資料,而
Response對象用於將伺服器的資料發送到使用者瀏覽器,這是實現網頁動態效果的基礎。 1 屬性 1)Buffer屬性 在asp.net 程式中,可以為頁面在伺服器端設定一個緩衝區。其實緩衝區就是一個儲存區,可以在其釋放資料之 前容納一段時間。設定緩衝區後,伺服器端可以減少與用戶端串連的次數而調高整體的相應速度,並可在滿足某些 條件時撤銷已經處理的結果,而不會出現響應完成一部分就停止的狀況。通過Beffer屬性決定開啟/關閉緩衝。若為false則關閉緩衝,若為true則開啟緩衝。Buffer屬性的更改必須放在HTML或指令碼輸出之前,因為任何內容發送到瀏覽器後Buffer屬性值就不能再更改,否則會引起錯誤。 注意:在asp.net 檔案的任意地方用到Redirect方法重新導向頁面,必須在檔案開頭關閉Buffer屬性,否則會報錯。 2)status屬性 用來傳遞伺服器HTTP響應的狀態。可以用來處理HTTP請求後伺服器返回的錯誤。伺服器返回狀態代碼有3位元字構成,可以根據狀態代碼來確定伺服器是如何處理HTTP請求的。在調試過程或向用戶端返回有關錯誤時,status屬性很重要,可以根據狀態代碼來明確錯誤源。 另:很全的狀態代碼 http://blog.sina.com.cn/s/blog_4ae187490100x9u7.html
3)IsClientConnected屬性 它是唯讀屬性 ,用來指示上次調用Response.write後,用戶端是否與伺服器相連。該屬性允許使用者在用戶端與伺服器沒有串連的情況下更多的控制。例如 2方法 1)Write 它是Reponse對象中最常用的方法之一,它可以把變數的值發送到用戶端的當前頁,它幾乎和一輸出所有的對象和資料。在write方法中可以嵌入任何HTML標記,只要該標記是合法的。 2)Clear clear用於清除緩衝區所有HTML輸出,但是它只刪除相應本文而不刪除相應標題。在伺服器上的程式產生錯誤時,可用clear方法來處理錯誤情況。 註:clear方法僅當Response對象的Buffer屬性設為True時才起作用。如果Buffer屬性未設定為True,則clear方法將導致運行錯誤。 3)End End方法使伺服器停止當前指令碼的處理並返回當前結果。如果response對象的Buffer設為為True,則End方法立即把緩衝中的內容發送到用戶端並清除緩衝。因此,若想取消向用戶端的所有輸出,可以先用clear方法清除緩衝,再用End方法停止指令碼的處理。 4)Redirect
在普通網頁中,可以使用超連結的方式來引導放我這跳轉到另一個頁面,但是這個過程需要訪問者單擊一個超連結才進行。response對象的redirect方法則可以自動完成頁面間的跳轉,而訪問者幾乎不會感覺出來。 總結:
Response對象用於接收用戶端瀏覽器提交的資料,而Request對象的功能則是將服務端的資料發送到用戶端瀏覽器。