天天看點

Response.Redirect、 Server.Transfer、Server.Execute三者差別

(1)Response.Redirect簡單地發送一條消息到浏覽器,告訴浏覽器定位到另一個頁面。client->server->client->server->client

(2)Server.Transfer也是将使用者引導到另外一個頁面,并傳回用戶端。

client->server->server->client

(3)Server.Execute執行一個頁面,并傳回結果。在asp.net中被Transfer代替

使用Server.Transfer優點:

首先,通過 Server.Transfer 引導到另一頁面保留伺服器資源,通過更改伺服器端"焦點"和傳輸請求來代替告訴浏覽器重定向,這就意味着你不會占用較多的 HTTP 請求,是以這可以減輕伺服器的壓力,使你的伺服器運作更快。不過, "transfer" 隻能在同一伺服器端的同一站點間運作,是以你不能用 Server.Transfer 将使用者重定向到另一伺服器上的站點。要重定向到伺服器以外的站點,隻有 Response.Redirect 能辦到。 

其次,Server.Transfer 保留浏覽器端的 URL 位址。這對流線型的資料輸入很有幫助,不過這也增加了調試的複雜度。

最後,Server.Transfer 方法還有另一個參數——"preserveForm"。假如你設定這個參數為 True,比如:Server.Transfer("WebForm2.aspx", True), 那麼 query string 和任何 form 變量都會同時傳遞到你定位的頁面。 

例:WebForm1.aspx 有一個文本框名為 TextBox1,你利用 preserveForm 為 True 傳遞到 WebForm2.aspx,那麼在WebForm2.aspx頁面可以用 Request.Form("TextBox1") 來取得文本框的值。

這種技術對向導式的多頁面輸入很有用,不過這裡有一個你必須注重的問題是,當你使用 preserveForm 參數時,ASP.NET 有一個 bug,通常情況下,當試圖傳遞 form 或 query string 值時會發生錯誤。

非官方的解決辦法是在傳遞的目的頁面中設定 EnableViewStateMac屬性設定為false。

本文轉自 韬光星夜 51CTO部落格,原文連結:http://blog.51cto.com/xfqxj/477101,如需轉載請自行聯系原作者

繼續閱讀