武春友,林 勇
(安徽廣播影視職業技術學院,安徽 合肥 230011)
在使用ASP.NET開發Web頁面時,經常需要在不同的頁面之間共享數據,而這些數據又是如何實現在不同的頁面之間進行共享的呢?這些往往都是通過在不同的頁面之間傳遞參數來實現的.
頁面之間的參數傳遞的方法有很多,下面我們將介紹幾個典型的方法,并比較它們各自的優缺點.
使用查詢字符串在頁面之間傳遞參數是一個很傳統的方法,主要步驟如下:
(1)使用控件創建Web表單(Form)
(2)創建可以返回表單的按鈕和鏈接按鈕
(3)在按鈕或鏈接按鈕的單擊事件里創建一個保存URL的字符變量
(4)在保存的URL里添加QueryString參數
(5)使用Response.Redirect()重定向到上面保存的URL頁面
下面的代碼及圖1和圖2演示了這種方法的實現:
源頁面代碼(Default.aspx.cs):



圖1 源頁面

圖2 目標頁面
這個方法比QueryString稍微復雜一些,需要額外寫一些代碼以創建一些屬性以便可以在另一個頁面訪問它,整個過程如下:
(1)在頁面里添加必要的控件
(2)創建返回值的Get屬性過程
(3)創建可以返回表單的按鈕和鏈接按鈕
(4)在按鈕單擊事件處理程序中調用Server.Transfer()方法轉移到指定的頁面
(5)在第二個頁面中,我們就可以使用Context.Handler屬性來獲得前一個頁面實例對象的引用,通過它,就可以使用存取前一個頁面的控件的值了.
源頁面代碼(Default.aspx.cs):


使用Session變量是在頁面間傳遞值的的另一種方式,我們把控件中的值存在Session變量中,然后在另一個頁面中使用它,以達到在不同頁面間實現值傳遞的目的,整個過程如下:
(1)在頁面里添加必要的控件
(2)創建可以返回表單的按鈕和鏈接按鈕
(3)在按鈕或鏈接按鈕的單擊事件里,把控件的值添加到session變量里
(4)使用Response.Redirect方法重定向到另一個頁面
(5)在另一個頁面提取session的值,在確定不需要使用該session時,要顯式清除它
源頁面代碼(Default.aspx.cs):


本文所介紹的幾種在頁面之間傳遞參數的方法,非常實用,是我們在設計開發Web頁面時經常采用的方法,它們各有各的特點,應用的場合也不盡相同,都有各自的優勢和不足,下面我們分別闡述一下:
(1)使用QuerySting的主要優點是實現起來非常簡單,而它的缺點是傳遞的值是會顯示在瀏覽器的地址欄上的,這就存在一個安全問題,同時又不能傳遞對象.它比較適用于傳遞的值少而安全性要求不高的場合.
(2)使用Server.Transfer,實現起來比較復雜一點,初學者難以掌握,但是,這個方式帶來的好處也是顯而易見的.總體來說,使用這種方法既高效,同時又是面向對象的.
(3)使用Session變量存儲過多的數據會消耗比較多的服務器資源,因此,在使用Session時應該慎重.我們也應該使用一些清理動作來去除一些不需要的Session變量來降低資源的無謂消耗.
基于ASP.NET頁面的參數傳遞的方法除了本文所介紹的三種方法之外,還有一些其他的方法,當然,這三種方法是最常用的方法,其他的很多方法要么是以上介紹的方法的變體,要么是將這三種方法結合在一起,基本原理都是相似的,希望讀者能夠結合應用的實際需要,選擇合適的參數傳遞的方法,設計出性能和安全性都能夠滿足要求的ASP.NET頁面.
〔1〕Christian Nagel,Bill Evjen,Jay Glynn.C# 高 級 編 程[M].北京:清華大學出版社,2008.
〔2〕Chris U llman,Chris Goode.ASP.NET 入門經典[M].北京:清華大學出版社,2002.
〔3〕Karli W atson, Christian Nagel etc. C# 入門經典[M].北京:清華大學出版社.