top
Loading...
ASP.NET頁面間數據傳遞小結


ASP.NET較ASP最大的優點,也是其受到越來越多程序員的歡迎的主要原因就是,ASP.NET為開發者提供了事件驅動的開發模式,從此程序員可以像利用可視化編程工具開發Windows應用程序一樣來開發ASP.NET的基于Web頁面的應用程序了。

一般稍微龐大的ASP.NET程序至少擁有二個或以上的Web頁面,程序員在開發類似ASP.NET應用程序時一般都需要處理在多個Web頁面傳遞數據的問題。我們知道ASP.NET程序中的各個Web頁面類似于Windows應用程序中的Form窗體,但ASP.NET程序中的各Web的組織結構比起Windows應用程序中各Form窗體要顯得松散許多。Windows應用程序中的各Form窗體間數據傳遞可以通過定義全局變量(Public static 變量)等方法來實現。而這些方法卻無法用以ASP.NET中各Web頁面數據傳遞,所以就必須尋找另外的方法。本文就來介紹二種可以實現ASP.NET中各Web頁面數據傳遞的方法:第一種方法是使用QueryString,第二種方法是使用Session。

一.本文程序設計和運行的軟件環境:

(1).微軟公司視窗2000服務器版。

(2).Visual Studio .Net正式版,.Net FrameWork SDK版本號3705。

二.使用QueryString實現Web頁面間數據傳遞:

QueryString實現Web頁面間傳遞數據是一種比較老的方法,在ASP時就是使用這種方法實現不同Web頁面間數據傳遞的。這種方法的最大的優點就是簡單,但其缺點也是非常明顯的,就是其安全性比較差,具體表現在從源頁面向目標頁面傳遞數據時,頁面間傳遞的數據將會顯現在目標頁面的地址欄中,具體可見圖05中的地址欄。還有使用QueryString只能在頁面間傳遞數量有限的數據,并且不可以傳遞Object類型的數據。以下就是ASP.NET頁面間數據傳遞的具體實現步驟,所使用的開發工具是Visual Studio .Net,開發語言是C#。實現的功能是把源頁面(WebForm1.aspx)中的二個TextBox中的數據傳遞到目標頁面中,并通過目標頁面(WebForm2.aspx)中的二個Label顯示從源頁面中傳遞來的數據:

1. 啟動Visual Studio .Net。

2. 選擇菜單【文件】|【新建】|【項目】后,彈出【新建項目】對話框。

3. 將【項目類型】設置為【Visual C#項目】。

4. 將【模板】設置為【ASP.NET Web 應用程序】。

5. 在【位置】的文本框中輸入"http://localhost/WebApplication4"。然后單擊【確定】按鈕,這樣在Visual Studio .Net就會在當前項目文件所在目錄中建立一個名稱為"WebApplication4"文件夾,里面存放是此項目的項目文件,項目中的其他文件存放的位置是計算機Internet信息服務的默認的Web站點所在的目錄中新建的一個名稱為"WebApplication4"的文件夾中。具體如圖01所示:


圖01:新建一個ASP.NET項目對話框

6. 單擊菜單【項目】|【添加Web窗體】,則彈出的【添加新項】對話框,將對話框【模板】設置為【Web窗體】,在【名稱】文本框中輸入"WebForm2.aspx"后單擊【打開】按鈕,則在此項目中加入另外一個新的窗體"WebForm2.aspx",具體如圖02所示:


圖02:【添加新項】對話框

7. 把Visual Studio .Net的當前頁面設置為WebForm1.aspx頁面的設計界面,并從【工具箱】中的【Web窗體】選項卡中往WebForm1.aspx頁面中拖入下列組件,并執行相應的操作:

二個TextBox組件,分別用來輸入向目標窗體傳遞的數據。

一個Button組件,用以實現源頁面向目標頁面傳遞數據,并在這個Button組件拖入WebForm1.aspx設計頁面后,雙擊它,則系統會在WebForm1.aspx..cs文件中自動產生這個組件的Click事件對應的處理代碼。WebForm1.aspx設計后的頁面如圖03所示:


圖03:WebForm1.aspx設計后的頁面

8. 把Visual Studio .Net的當前頁面設置為WebForm2.aspx頁面的設計界面,并從【工具箱】中的【Web窗體】選項卡中往WebForm2.aspx頁面中拖入下列組件,并執行相應的操作:

二個Label組件,用以顯示源頁面向目標頁面傳遞的數據。

雙擊WebForm2.aspx設計頁面,則系統會在WebForm2.aspx..cs文件中自動Page頁面的Load事件對應的處理代碼。程序將在此事件中接收源頁面向目標頁面傳遞來的數據,并通過Lable組件顯示出來。WebForm2.aspx設計后的頁面如圖04所示:


圖04:WebForm2.aspx設計后的頁面

9. 把Visual Studio .Net的當前窗口切換到WebForm1頁面的代碼編輯窗口,即:WebForm1.aspx.cs文件的編輯窗口。用下列代碼替換WebForm1.aspx.cs中的Button1組件的Click事件對應的處理代碼,下列代碼的功能是實現源頁面向目標頁面傳遞數據:

private void Button1_Click ( object sender , System . EventArgs e )
{
string sUrl;
//定義一個字符串,此字符串中包含源頁面向目標傳遞的數據
sUrl = "WebForm2.aspx?name=" +
TextBox1 . Text + "&email=" +
TextBox2 . Text ;
//從源頁面中獲得傳遞的數據
Response . Redirect ( sUrl ) ;
//向目標頁面傳遞數據
}

10. 把Visual Studio .Net的當前窗口切換到WebForm2頁面的代碼編輯窗口,即:WebForm2.aspx.cs文件的編輯窗口。用下列代碼替換WebForm2.aspx.cs中Page的Load事件對應的處理代碼,下列代碼的功能是從源頁面中接收數據,并通過相應組件顯示接收到的數據:

private void Page_Load ( object sender , System . EventArgs e )
{
Label1 . Text = Request . QueryString [ "name" ] ;
//使用QueryString從源頁面中接收name變量數據,并通過Label1顯示
Label2 . Text = Request . QueryString [ "email" ] ;
//使用QueryString從源頁面中接收email變量數據,并通過Label2顯示
// 在此處放置用戶代碼以初始化頁面
}

11. 至此第一種實現ASP.NET頁面間數據傳遞的方法就介紹完了,此時單擊快捷鍵【F5】運行程序,并在第一個頁面中二個TextBox組件分別輸入"阿虎"、"ahah@etang.com "后,具體如圖05所示,再單擊頁面中的Button1按鈕,則會得到圖06所示的頁面,可見的確把源頁面中的數據傳遞到了目標頁面中:


圖05:運行頁面01


圖06:運行頁面02

三.使用Session實現Web頁面間數據傳遞:

Session會話是編寫網頁時經常遇到的概念,使用Session傳遞數據雖然可以克服在使用QueryString時的缺點,但大量的使用則有可能導致服務器的癱瘓,尤其是瀏覽量非常大的頁面,使用Session就尤其要注意。解決的辦法就是Session使用結束后,必須清除。以下就是在ASP.NET中使用Session傳遞數據的一般步驟,使用的開發工具是Visual Studio .Net,語言是C#:

1. 啟動Visual Studio .Net。

2. 選擇菜單【文件】|【新建】|【項目】后,彈出【新建項目】對話框。

3. 將【項目類型】設置為【Visual C#項目】。

4. 將【模板】設置為【ASP.NET Web 應用程序】。

5. 在【位置】的文本框中輸入"http://localhost/session"。然后單擊【確定】按鈕,這樣在Visual Studio .Net就會在當前項目文件所在目錄中建立一個名稱為"session"文件夾,里面存放是此項目的項目文件,項目中的其他文件存放的位置是計算機Internet信息服務的默認的Web站點所在的目錄中新建的一個名稱為"session"的文件夾中。具體如圖07所示:


圖07:新建一個ASP.NET項目對話框

6. 按照QueryString實現步驟中的第六步來操作,在session項目中新建一個Web頁面,名稱為"WebForm2.aspx"。

7. 按照QueryString實現步驟中的第七步來操作,在WebForm1.aspx頁面中創建二個TextBox組件、一個Button組件,并在WebForm1.aspx.cs中創建此Button組件的Click事件對應的處理代碼。

8. 按照QueryString實現步驟中的第八步來操作,在WebForm2.aspx頁面中創建二個Label組件,并在WebForm2.aspx.cs中創建此Page頁面的Load事件對應的處理代碼。

9. 把Visual Studio .Net的當前窗口切換到WebForm1頁面的代碼編輯窗口,即:WebForm1.aspx.cs文件的編輯窗口。用下列代碼替換WebForm1.aspx.cs中的Button1組件的Click事件對應的處理代碼,下列代碼的功能是使用Session實現源頁面向目標頁面傳遞數據:

private void Button1_Click ( object sender , System . EventArgs e )
{
Session [ "name" ] = TextBox1 . Text ;
//創建Session變量,用以存放TextBox1組件中的數據
Session [ "email" ] = TextBox2 . Text ;
//創建Session變量,用以存放TextBox2組件中的數據
Server . Transfer ( "WebForm2.aspx" ) ;
//向目標頁面傳遞數據,如果你是其他頁面則替換上面的WebForm2.aspx
}

10. 把Visual Studio .Net的當前窗口切換到WebForm2頁面的代碼編輯窗口,即:WebForm2.aspx.cs文件的編輯窗口。用下列代碼替換WebForm2.aspx.cs中Page的Load事件對應的處理代碼,下列代碼的功能是從源頁面中接收數據,并通過相應組件顯示接收到的數據,并清除創建的Session變量:

private void Page_Load ( object sender , System . EventArgs e )
{
Label1 . Text = Session [ "name" ] . ToString ( ) ;
Label2 . Text = Session [ "email" ] . ToString ( ) ;
//從源頁面中接收數據,顯示出來
Session . Remove ( "name" ) ;
Session . Remove ( "email" ) ;
//清除創建的Session的變量
// 在此處放置用戶代碼以初始化頁面
}

11. 至此在ASP.NET使用Session實現Web頁面間數據傳遞的方法就介紹完了,此時單擊快捷鍵【F5】運行程序就可以得到如圖05和圖06所示的運行界面。

四.總結:

本文介紹了二種在ASP.NET這實現Web頁面間數據傳遞的方法,即:QueryString和Session。這二種方法可由千秋又各自擁有無法克服的缺點。總結起來就是QueryString相當簡單,Session相對復雜;QueryString安全性差,Session安全性高;QueryString可實現各Web頁面簡單數據傳遞,一般就是字符串類型,Session可實現各Web頁面間復雜類型數據的傳遞等等。當然在ASP.NET中實現Web頁面數據傳遞的方法除了上述方法,肯定還可能存在其他更好、更簡單的,如有機會,希望能夠共同探討。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗