Asp.Net頁面傳值的方法

CodeAgriculture發表於2013-03-29
一、Resonse.Redirect():          
            //Method1 Response.Redirect
            string name = this.lb_Name.Text;
            Response.Redirect("TargetPage.aspx?name=" + name);//優點傳值簡單;缺點:安全性低、不能傳遞陣列和物件

二、Session
            /*Method2 Session
             * 優點:使用簡單,不僅能傳遞簡單資料型別,還能傳遞物件。2.資料量大小是不限制的。
             * 缺點:1.在Session變數儲存大量的資料會消耗較多的伺服器資源。2.容易丟失。
             * 銷燬的方法是:清除一個:Session.Remove("session名");清除所有:Session.Clear();
             * 注意區別Application和Session:前者所有的使用者共用的全域性變數,後者是各個使用者獨有的全域性變數。
             * */
            Session["Name"] = name;
            //Response.Redirect("TargetPage.aspx");

三、Application
            /*Method3 Application
             * 優點:使用簡單,消耗較少的伺服器資源。2.不僅能傳遞簡單資料,還能傳遞物件。3.資料量大小是不限制的。
             * 缺點:1.作為全域性變數容易被誤操作。所以單個使用者使用的變數一般不能用application。
             *
             * 注意:常用lock和unlock方法用來鎖定和解鎖,為了防止併發修改。
             *
             * */
            Application["Name"] = this.Label1.Text;
           
方法四 Cookie:
            /*Method 4 Cookies
             *
             * */
            HttpCookie hc = new HttpCookie("Name", this.Label10.Text);
            Response.Cookies.Add(hc);
            //Response.Redirect("TargetPage.aspx");

方法五:Server.Transfer
            /*Method 5 Server.Transfer();
             *優點:1.直接在伺服器端重定向,使用簡單方便,減少了客戶端對伺服器端提出請求。2.可以傳遞各種資料型別的值和控制元件的值。
             *缺點: 1.客戶端瀏覽器中的URL地址是不改變,會導致在新的頁面可能出現一些意想不到的問題。比如如果源頁面和目的頁面不在同一個虛擬目錄或其子目錄下,那麼使用相對路徑的圖片、超連結都會導致錯誤的指向。
            
             * 比較Server.Transfer和Response.Redirect的區別。
            (1)Server.Transfer在伺服器端完成,所以客戶端瀏覽器中的URL地址是不會改變的;Response.Redirect是客戶端完成,向伺服器端提出新的頁面處理請求,所以客戶端瀏覽器中的URL地址是會改變的。
            (2)Server.Transfer在伺服器端完成,不需要客戶端提出請求,減少了客戶端對伺服器端提出請求。
            (3)Server.Transfer只能夠轉跳到本地虛擬目錄指定的頁面,也就是工程專案中的頁面,而Response.Redirect則十分靈活,可以跳轉到任何URL地址。
            (4)Server.Transfer可以將前一個頁面的各種型別的值傳到新的頁面;Response.Redirect則只能藉助URL中帶引數或是結合上面四種辦法把各種型別的值傳到新的頁面。
             * * */
            Server.Transfer("TargetPage.aspx",false);

            //Server.Transfer 傳值
           public string Lb_Name
           {
              get { return this.lb_Name.Text; }
          }
使用Server.Transfer時在頁面定義一個屬性,在目標頁面使用Context.Handler獲取傳遞頁面物件eg:
SourcePage sp = (SourcePage)Context.Handler;//可以獲取SourcePage頁面的所有物件
 this.TextBox4.Text = sp.Lb_Name;

目標頁接收傳遞過來的值:
            string name = Request.QueryString["Name"];
             this.tb_value.Text = name;

            this.TextBox1.Text = Session["Name"].ToString();

            Application.Lock();
            this.TextBox2.Text = Application["Name"].ToString();
            Application.UnLock();

            this.TextBox3.Text = Request.Cookies["Name"].Value.ToString();

            SourcePage sp = (SourcePage)Context.Handler;//可以獲取SourcePage頁面的所有物件(
SourcePage 為跳轉之前的頁面
            this.TextBox4.Text = sp.Lb_Name;

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28699126/viewspace-757400/,如需轉載,請註明出處,否則將追究法律責任。

相關文章