武春友,林 勇
(安徽广播影视职业技术学院,安徽 合肥 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].北京:清华大学出版社.