ASP.NET页面之间传递值
列举asp.net页面之间传递值的几种方式。
1.url传值
这是经典的传值方式, 如xxx.x?id=1&name=c; 不过所传递的值是会显示在的地址栏上的,而且不能传递对象。所以这种方法一般用于传递的值少且安全性要求不高的情况下。
2.session传值
这种方法将每份数据存储于服务器变量中,可以传递比较多的数据,并且安全性较高,所以常用于用户身份的验证功能中。不过,session变量如果存储过多的数据会消耗过多的服务器资源,者在使用时应该慎重。session可在应用程序的多个页面中以名称/值对的方式共享,直到浏览用户关闭自己的浏览器或者服务器session超时(可设置,默认为20分钟)停止。
session具有以下特点:
session中的数据保存在服务器端;
session中可以保存任意类型的数据;
session默认的生命周期是20分钟,可以手动设置更长或更短的时间。
3.cookie传值
cookie 是一种比较特殊的数据存储方式,因为这种方式将数据存储于浏览用户的电脑中,以文本文件的形式存在于磁盘中。这种方式非常有意思,很多登录就是利用 cookie实现用户自动登录。即用户登录一次的登录信息将被写入到用户电脑的cookie文件中,下次登录时,网站自动读取该cookie完成身份验证。通过cookie传递数据虽然很方便,保存时间可以*设置,但是安全性不高,编程者不应过于依赖cookie,而应采用结合的方式完成敏感数据的存储。
cookie保存数据有以下特点:
cookie中的数据保存在客户端;
cookie中只能保存字符串类型的数据,如果需要在cookie中保存其它类型数据,需要将其转换成字符串类型后保存;
cookie也有其默认生命周期,也可以手动设置,最大可设置成50年之后过期。
4.server.transfer传值
这个方法的步骤相对较多,使用该方法可以在另一个页面以公开对象属性的方式来存取值,使用这种方法是面向对象的。该方法的代码编写并不复杂,首先通过定义一个public权限的属性,该属性可返回所需传递的值。然后在第二个页面中,使用context.handler属性来获得前一个页面实例对象的引用,即可通过访问自定义的属性获取需要的值。
5.application传值
严格地说应该是通过httpapplication对象在服务器端生成一个状态变量来存储所需的信息,该httpapplication对象变量的可用范围覆盖整个web应用程序。所以该对象一般存储一些要公布的信息,如在线人数等,而对于那些涉及用户个人的敏感数据则不用这种方法存储。 httpapplication对象有两个常用的方法,即lock和unlock方法,可用于处理多个用户对存储在application变量中的数据进行写入的问题。lock方法锁定全部的application变量,从而阻止其他用户修改application对象的变量值,unlock方法则解除对 httpapplication对象变量的锁定。通过httpapplication对象传值的方法和session比较相似,但是session是对于每个单独的用户,当该用户关闭浏览器,则session失效。httpapplication对象存储的变量是针对所有访问程序的用户,即使有用户关闭了浏览器,变量的值不会丢失。
6.跨页面传送
跨页面传送和调用httpserverutility对象的transfer方法有相似之处,不过效率更高。因为调用httpserverutility对象的transfer方法是基于服务器的方法,而跨页面传送是基于浏览器端的。这个方法主要是设置控件的“postbackurl”属性,使该控件(如 button)操作后转向指定页面,并且这个指定页面可以直接获取前一个页面的所有控件对象及其属性值。
7.如果有特殊需要,还可以使用其他方法,例如通过存储临时数据等。
摘自 peter luo