博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net页面间传值方式汇总
阅读量:4943 次
发布时间:2019-06-11

本文共 1790 字,大约阅读时间需要 5 分钟。

 七种传值方式,分别是:URL传值,Session传值,Cookie传值,Server.Transfer传值,Application传值,利用某些控件的PostBackUrl属性和使用@PreviousPageType指令传值。

.传值方式简单汇总

 

传值方法名称

传值方式

优缺点

URL传值

(QueryString传值)

2种传值方式。

1、超级链接文本进行传值;2、调用HttpResponse对象的Redirect方法

优点:一般用于传递的值少,安全性较低;

缺点:传递的值是会显示在浏览器的地址栏上的,而且不能传递对象

Session传值

把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。

优点:将每份数据存储于服务器变量中,可以传递比较多的数据;安全性较高

缺点:Session变量如果存储过多的数据会消耗过多的服务器资源;

Cookie传值

比较特殊的数据存储方式,因为这种方式将数据存储于浏览用户的电脑中,以文本文件的形式存在于磁盘中

优点:很多登录系统就是利用Cookie实现用户自动登录。即用户登录一次的登录信息将被写入到用户电脑的Cookie文件中,下次登录时,网站自动读取该Cookie完成身份验证。

缺点:有些浏览器不支持Cookie传值,安全性不高

Server.Transfer传值

使用该方法可以在另一个页面以对象属性的方式来存取显露的值,但还需要额外写一些代码以创建一些属性以便可以在另一个页面访问它

Transfer只适合于服务器端重定向的页面。

优点:使用这种方法是简洁的同时又是面向对象的。使用该方法编程者可以在另一个页面以公开对象属性的方式来存取值。

缺点:操作步骤较多

Application传值

通过HttpApplication对象在服务器端生成一个状态变量来存储所需的信息,该HttpApplication对象变量的可用范围覆盖整个WEB应用程序,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。

该对象一般存储一些要公布的信息,如在线人数等,而对于那些涉及用户个人的敏感数据则不用这种方法存储。

利用某些控件的PostBackUrl属性

主要是设置控件的“PostBackUrl”属性,

优点:更加快捷,并减少了处理步骤。

使用@PreviousPageType指令

用于批定跨页面的传送过程起始于哪个页面.包含两个属性:

TypeName:设置回送时的派生类名;VirtualPath:设置回送时所传送页面的地址.

 这个指令是.net 2.0中的一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能

 

 

.简单比较

 

 1.SessionCookie        

 

        相同点:存储传递值,是对每一个用户而言的

        不同点:Cookie存放在客户端;Session存放在服务器端,而且Cookie的使用要配合 ASP.NET内置对象Request来使用。

 

2.SessionApplication   

 

       相同点:Application通过HttpApplication对象传值的方法Session的传值方法相似;

       不同点:Session是对于每个单独的用户,当该用户关闭浏览器,则Session失效。HttpApplication对象存储的变量是针对所有访问程序的用户,即使有用户关闭了浏览器,变量的值不会丢失。

 

3.利用某些控件的PostBackUrl属性 Server.Transfer传值

 

        相同点:跨页面传送和调用HttpServerUtility对象的Transfer方法有相似之处,不过效率更高

        不同点:因为调用HttpServerUtility对象的Transfer方法是基于服务器的方法,而跨页面传送是基于浏览器端的。

 

.总结

         .NET传值,看起来方法挺多,但是真要应用的时候,还是要有针对性,考虑你做的系统的功能需求,安全性等方方面面,不是找最简单最方便的方法,而是要找最适合做你这个项目的方法,中国的中庸之道,“平衡”就好。

 

(附)Asp.Net页面生命周期:

页请求(浏览器的请求)-开始-页初始化-加载-验证-回发事件处理-呈现-卸载

 

转自:

 

转载于:https://www.cnblogs.com/peterYong/p/6556609.html

你可能感兴趣的文章
sql语句出错:Column count doesn't match value count at row 1
查看>>
JVM 垃圾回收机制
查看>>
运行MonkeyRunner时使用Genymotion模拟器
查看>>
spring提供的线程池
查看>>
Head First Java Stick 01
查看>>
javascript系列:NaN类型
查看>>
mysql索引总结
查看>>
C#,COM口,接收,发送数据
查看>>
FFT海面(简版)
查看>>
破解TexturePacker加密资源
查看>>
观察者(Observer)模式
查看>>
AngularJS track by $index引起的思考
查看>>
IP fragmentation
查看>>
分组答辩小程序
查看>>
[LOJ 1008] Fibsieve`s Fantabulous Birthday
查看>>
go初探 - 生成随机整数
查看>>
Python Challenge 过关心得(0)
查看>>
Earth Wind and Fire CodeForces - 1148E (构造)
查看>>
幸福就是有人爱、有事做、有所期待(转)
查看>>
OC中的内省方法初探
查看>>