武春友,林 勇
(安徽廣播影視職業(yè)技術(shù)學(xué)院,安徽 合肥 230011)
在使用ASP.NET開(kāi)發(fā)Web頁(yè)面時(shí),經(jīng)常需要在不同的頁(yè)面之間共享數(shù)據(jù),而這些數(shù)據(jù)又是如何實(shí)現(xiàn)在不同的頁(yè)面之間進(jìn)行共享的呢?這些往往都是通過(guò)在不同的頁(yè)面之間傳遞參數(shù)來(lái)實(shí)現(xiàn)的.
頁(yè)面之間的參數(shù)傳遞的方法有很多,下面我們將介紹幾個(gè)典型的方法,并比較它們各自的優(yōu)缺點(diǎn).
使用查詢字符串在頁(yè)面之間傳遞參數(shù)是一個(gè)很傳統(tǒng)的方法,主要步驟如下:
(1)使用控件創(chuàng)建Web表單(Form)
(2)創(chuàng)建可以返回表單的按鈕和鏈接按鈕
(3)在按鈕或鏈接按鈕的單擊事件里創(chuàng)建一個(gè)保存URL的字符變量
(4)在保存的URL里添加QueryString參數(shù)
(5)使用Response.Redirect()重定向到上面保存的URL頁(yè)面
下面的代碼及圖1和圖2演示了這種方法的實(shí)現(xiàn):
源頁(yè)面代碼(Default.aspx.cs):
圖1 源頁(yè)面
圖2 目標(biāo)頁(yè)面
這個(gè)方法比QueryString稍微復(fù)雜一些,需要額外寫(xiě)一些代碼以創(chuàng)建一些屬性以便可以在另一個(gè)頁(yè)面訪問(wèn)它,整個(gè)過(guò)程如下:
(1)在頁(yè)面里添加必要的控件
(2)創(chuàng)建返回值的Get屬性過(guò)程
(3)創(chuàng)建可以返回表單的按鈕和鏈接按鈕
(4)在按鈕單擊事件處理程序中調(diào)用Server.Transfer()方法轉(zhuǎn)移到指定的頁(yè)面
(5)在第二個(gè)頁(yè)面中,我們就可以使用Context.Handler屬性來(lái)獲得前一個(gè)頁(yè)面實(shí)例對(duì)象的引用,通過(guò)它,就可以使用存取前一個(gè)頁(yè)面的控件的值了.
源頁(yè)面代碼(Default.aspx.cs):
使用Session變量是在頁(yè)面間傳遞值的的另一種方式,我們把控件中的值存在Session變量中,然后在另一個(gè)頁(yè)面中使用它,以達(dá)到在不同頁(yè)面間實(shí)現(xiàn)值傳遞的目的,整個(gè)過(guò)程如下:
(1)在頁(yè)面里添加必要的控件
(2)創(chuàng)建可以返回表單的按鈕和鏈接按鈕
(3)在按鈕或鏈接按鈕的單擊事件里,把控件的值添加到session變量里
(4)使用Response.Redirect方法重定向到另一個(gè)頁(yè)面
(5)在另一個(gè)頁(yè)面提取session的值,在確定不需要使用該session時(shí),要顯式清除它
源頁(yè)面代碼(Default.aspx.cs):
本文所介紹的幾種在頁(yè)面之間傳遞參數(shù)的方法,非常實(shí)用,是我們?cè)谠O(shè)計(jì)開(kāi)發(fā)Web頁(yè)面時(shí)經(jīng)常采用的方法,它們各有各的特點(diǎn),應(yīng)用的場(chǎng)合也不盡相同,都有各自的優(yōu)勢(shì)和不足,下面我們分別闡述一下:
(1)使用QuerySting的主要優(yōu)點(diǎn)是實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,而它的缺點(diǎn)是傳遞的值是會(huì)顯示在瀏覽器的地址欄上的,這就存在一個(gè)安全問(wèn)題,同時(shí)又不能傳遞對(duì)象.它比較適用于傳遞的值少而安全性要求不高的場(chǎng)合.
(2)使用Server.Transfer,實(shí)現(xiàn)起來(lái)比較復(fù)雜一點(diǎn),初學(xué)者難以掌握,但是,這個(gè)方式帶來(lái)的好處也是顯而易見(jiàn)的.總體來(lái)說(shuō),使用這種方法既高效,同時(shí)又是面向?qū)ο蟮?
(3)使用Session變量存儲(chǔ)過(guò)多的數(shù)據(jù)會(huì)消耗比較多的服務(wù)器資源,因此,在使用Session時(shí)應(yīng)該慎重.我們也應(yīng)該使用一些清理動(dòng)作來(lái)去除一些不需要的Session變量來(lái)降低資源的無(wú)謂消耗.
基于ASP.NET頁(yè)面的參數(shù)傳遞的方法除了本文所介紹的三種方法之外,還有一些其他的方法,當(dāng)然,這三種方法是最常用的方法,其他的很多方法要么是以上介紹的方法的變體,要么是將這三種方法結(jié)合在一起,基本原理都是相似的,希望讀者能夠結(jié)合應(yīng)用的實(shí)際需要,選擇合適的參數(shù)傳遞的方法,設(shè)計(jì)出性能和安全性都能夠滿足要求的ASP.NET頁(yè)面.
〔1〕Christian Nagel,Bill Evjen,Jay Glynn.C# 高 級(jí) 編 程[M].北京:清華大學(xué)出版社,2008.
〔2〕Chris U llman,Chris Goode.ASP.NET 入門(mén)經(jīng)典[M].北京:清華大學(xué)出版社,2002.
〔3〕Karli W atson, Christian Nagel etc. C# 入門(mén)經(jīng)典[M].北京:清華大學(xué)出版社.
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2012年22期