熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.Net中頁面之間傳參方法

2013-11-13 09:50:53  來源: .NET編程 
    ASPNET提供了卓越的事件驅動編程模型讓開發者簡化了應用程序的總體設計但是這個也造成了它固有的一些問題例如使用傳統的ASP裡我們可以通過使用POST方法很容易地實現頁面間傳遞值同樣的事情在使用事件驅動編程模型的ASPNET就不是那麼容易了當然了我們仍然有一些方法可以實現同樣的功能
   
    本文將試著使用不同的可能的方法來解決這個問題但可以預見是本文將包含使用querystringsession變量以及serverTransfer方法來實現頁面間的值傳遞
   
    使用QueryString
   
    使用QuerySting在頁面間傳遞值已經是一種很老的機制了這種方法的主要優點是實現起來非常簡單然而它的缺點是傳遞的值是會顯示在浏覽器的地址欄上的(不安全)同時又不能傳遞對象但是在傳遞的值少而安全性要求不高的情況下這個方法還是一個不錯的方案
   
    使用這種方法的步驟如下
   
    使用控件創建web表單(form)
   
    創建可以返回表單的按鈕和鏈接按鈕
   
    在按鈕或鏈接按鈕的單擊事件裡創建一個保存URL的字符變量
   
    在保存的URL裡添加QueryString參數
   
    使用ResponseRedirect重定向到上面保存的URL 下面的代碼片斷演示了如何實現這個方法
   
    源頁面代碼
   
    private void Button_Click (object sender SystemEventArgs e)
   
    {
   
    string url;
   
    url=anotherwebformaspx?name= + TextBoxText + &email= + TextBoxText;
   
    ResponseRedirect(url)
   
    }
   
    目標頁面代碼
   
    private void Page_Load (object sender SystemEventArgs e)
   
    {
   
    LabelText=RequestQueryString[name];
   
    LabelText=RequestQueryString[email];
   
    }
   
    使用Session變量
   
    使用Session變量是可以在頁面間傳遞值的的另一種方式在本例中我們把控件中的值存在Session變量中然後在另一個頁面中使用它以不同頁面間實現值傳遞的目的但是需要注意的是在Session變量存儲過多的數據會消耗比較多的服務器資源在使用session時應該慎重當然了我們也應該使用一些清理動作來去除一些不需要的session來降低資源的無謂消耗
   
    使用Session變量傳遞值的一般步驟如下
   
    在頁面裡添加必要的控件
   
    創建可以返回表單的按鈕和鏈接按鈕
   
    在按鈕或鏈接按鈕的單擊事件裡把控件的值添加到session變量裡
   
    使用ResponseRedirect方法重定向到另一個頁面
   
    在另一個頁面提取session的值在確定不需要使用該session時要顯式清除它 下面的代碼片斷演示了如何實現這個方法
   
    源頁面代碼
   
    private void Button_Click (object sender SystemEventArgs e)
   
    {
   
    //textbox and textbox are webform controls
   
    Session[name]=TextBoxText;
   
    Session[email]=TextBoxText;
   
    ServerTransfer(anotherwebformaspx
   
    }
   
    目標頁面代碼
   
    private void Page_Load (object sender SystemEventArgs e)
   
    {
   
    LabelText=Session[name]ToString()
   
    LabelText=Session[email]ToString()
   
    SessionRemove(name
   
    SessionRemove(email
   
    }


   
    使用ServerTransfer
   
    這個方法相比上面介紹的方法稍微復雜一點但在頁面間值傳遞中卻是特別有用的使用該方法你可以在另一個頁面以對象屬性的方式來存取顯露的值當然了使用這種方法你需要額外寫一些代碼以創建一些屬性以便可以在另一個頁面訪問它但是這個方式帶來的好處也是顯而易見的總體來說使用這種方法是簡潔的同時又是面向對象的
   
    使用這種方法的整個過程如下
   
    在頁面裡添加必要的控件
   
    創建返回值的Get屬性過程
   
    創建可以返回表單的按鈕和鏈接按鈕
   
    在按鈕單擊事件處理程序中調用ServerTransfer方法轉移到指定的頁面
   
    在第二個頁面中我們就可以使用ContextHandler屬性來獲得前一個頁面實例對象的引用通過它就可以使用存取前一個頁面的控件的值了 以下代碼綜合實現上述步驟過程的代碼 源頁面代碼 把以下的代碼添加到頁面中
   
    public string Name
   
    {
   
    get { return TextBoxText; }
   
    }
   
    public string EMail
   
    {
   
    get { return TextBoxText; }
   
    }
   
    然後調用ServerTransfer方法
   
    private void Button_Click (object sender SystemEventArgs e)
   
    {
   
    ServerTransfer(anotherwebformaspx
   
    }
   
    目標頁面代碼
   
    private void Page_Load (object sender SystemEventArgs e)
   
    {
   
    //create instance of source web form
   
    WebForm wf;
   
    //get reference to current handler instance
   
    wf=(WebForm)ContextHandler;
   
    LabelText=wfName;
   
    LabelText=wfEMail;
   
    }
   
    通過本文的對頁面之間傳遞參數幾種方法的介紹希望對你有幫助


From:http://tw.wingwit.com/Article/program/net/201311/11725.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.