asp.net中Server.Transfer和Response.Redirect的區別

Server.Transfer方法把執行流程從當前的ASPX文件轉到同一服務器上的另一個ASPX頁面。調用Server.Transfer時,當前的ASPX頁面終止執行,執行流程轉入另一個ASPX頁面,但新的ASPX頁面仍使用前一ASPX頁面創建的應答流。
如果用Server.Transfer方法實現頁面之間的導航,瀏覽器中的URL不會改變,因爲重定向完全在服務器端進行,瀏覽器根本不知道服務器已經執行了一次頁面變換。
Response.Redirect則是客戶端第一次請求服務器返回狀態代碼302及新URL,客戶端再次請求新URL,服務器再返回新頁面,比Server.Transfer多一次應答。


一般來說如果需要在兩個頁面間共享數據,而且數據量比較大的時候,用transfer會比較合適,在第二個頁面中可以直接使用前一頁面的數據

 

例:Server.Transfer

public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        private string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
       
        protected void Button1_Click(object sender, EventArgs e)
        {
            this._name = this.TextBox1.Text;
            Server.Transfer("WebForm2.aspx", false);
           
        }
    }

 

public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            WebForm1 form1 = (WebForm1)Context.Handler;
            Response.Write(form1.Name);
        }
    }

發佈了32 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章