1.使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
|
b.aspx中C#代码
|
2.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
a.aspx的C#代码
|
b.aspx中C#代码
|
3.使用Session变量
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
a.aspx的C#代码
|
b.aspx中C#代码
|
4.使用Cookie对象变量
这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。
a.aspx的C#代码
|
b.aspx中C#代码
|
5.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
setValuePage.aspx的C#代码
|
getValuePage.aspx中C#代码
|
总结:
/* 记得不太清楚是在某一段时间对页面间的传值方法做了一些了解.自以为对这些方法用得是游刃有余了.
* 在后期的开发过程中还是发现了自己的不足.于是再次上网查了一些对此的相关资料.
*
* 页面间的传传值方法有很多种,常见的有QueryString,Application,Session,Cookie,ViewState,Server.Transfer.
* 现在对它们分别作一个介绍:
*
* 1:使用 QueryString
* QueryString是一种非常简单的传值方式,它在浏览器中是以键值的形式传递字符串,其值是可见的
* 通常适用于传递明码参数,也就是不需要保密的参数.所以对于安全性较高的参数,不适合采用此方法.
* 缺点是:它不能传递对象,传递数据没有安全性,参数的长度不能大于1024个字节,当参数有中文时,
* 可以采用HttpUlitity.UrlEncode、HttpUlitity.UrlDecode对参数进行编码、解码.
* 2:使用 Application
* Application对象作用的范围是整个全局变量,对操作的所有用户都有效。
* 虽然它是全局变量,但是它对操作的所有用户都有效,所以不适合用于像“用户信息”这样的全局变量传递。
* 3:使用 Session
* 这是一种最常见的方法,其操作与Application类似。但它作用于用户个人。过量的存储会导致服务器内存资源的耗尽。
* 用于保存状态的基于Web服务器的方法,它可以将值传到任意的页面,直到把Session变量的值Removed或Clear后,变量的值才会消失.
* 缺点就是:当系统繁忙时,可能会丢失Session;使用Session变量往往会占用服务器端的内存使用,
* 所以再网页流量很大的时候,Session便不能很好的完成传值得任务,由于Session有一个timeout,
* 所以在使用的时候对用户得操作也有一定的影响.
* 3:使用 Cookie
* 与Session一样,其是针对每一个用户而言的。但是有个本质的区别,即Cookie是存放在客户端的,
* 而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。
* 浏览器对 Cookie 的大小有限制,因此,只有不超过 4096 字节才能保证被接受
* 另外:Cookie传值在.net平台下运行是正常的,而到了虚拟目录或者站点下就会出现乱码.
* 解决的方法:在写入Cookie的时候用Server.UrlEncode 读取Cookie的时候用 Server.UrlDecode.
* 4:使用 ViewState
* 在请求之间保存它的内部状态.
* 5:使用 Server.Transfer
* 这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,
* 新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
*/