ASP.NET页面间传值

页面间不同的传值方式,对应着不同的打开新页面的方式:

共有QueryString,session,cookies,application,server.Transfer,respose.redictor这6种方式

1.URL附加字段(相当于get的表单提交)

  协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志

这种方式只要求是通过URL打开页面,不限于打开页面的方式。无论是C#的Redirect方法还是JavaScript的window对象的方法。

JavaScript可以通过location.href得到当前页面访问路径,从而获取对应参数。

C#可以通过QueryString获取参数。

缺点:保密性差 ;   长度有限

优点:不消耗服务器资源;  

2.window.open()

  window是一个javascript对象,可以用它的open方法。

  当使用window.open()打开新页面时,浏览器会认为这两个窗口之间有一种打开与被打开的关系,所以在被打开的新窗口中在当前窗口的window对象中有一个window.opener 属性,这个值里面放着打开窗口的引用,所以可以获得这个值,进而引用上一页面内的对象的值。

  优点:取值方便.只要window.opener指向父窗口,就可以访问所有对象. 不仅可以访问值,还可以访问父窗口的方法.值长度无限制. 

  缺点:两窗口要存在着关系.就是利用window.open打开的窗口.不能跨域.

3.Server.Transfer传值:

  通过C#的Server.Transfer()打开新页面,可以在新页面通过Context.Handler获得上个页面实例化的句柄,进而获取上个页面的对象

4.Cookie对象变量:

Cookie是针对每一个用户而言的,是存放在客户端的 ,Cookie的使用要配合ASP.NET内置对象Request来使用

5.Session对象变量:

Session也是针对每一个用户而言的,是存放在服务器端的 ,Session不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed 后,变量才会消失

6.Application对象变量:
 Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock

优缺点

 QueryString  传递一个或多个安全性要求不高或是结构简单的数值。但是对于传递数组或对象的话,就不能用这个方法了 
session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储会导致服务器内存资源的耗尽。  
application 对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock 
cookie 简单,但可能不支持,可能被伪造 Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用 
input ttype="hidden" 简单,可能被伪造 
url参数简单,显示于地址栏,长度有限 
Server.Transfer  把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流 
数据库稳定,安全,但性能相对弱

原文地址:https://www.cnblogs.com/dengquan/p/9289543.html