asp.net中常用的几种页面间传递参数的方法,及各自优缺点?

1、页面重定向方式中常用的两

(1)Redirect 方法将客户端重定向到新的页面,只是简单地终止当前页面,并转入新的页面开始执行,对转入的页面无任何限制。

(2)Transfer 方法终止当前页的执行,并为当前请求开始执行新的页面。把执行流程从当前页面转到同一服务器中的另一页面,但是新的页面仍然使用当前页面创建的应答流。

这两种方法的主要区别是:(1)Redirect 方法可以实现任意网页间的重定向,而Transfer 方法只能实现同一服务器中 ASPX 页面间的重定向。

(2)Redirect 方法不会保留当前页面的表单(Form)数据和查询字符串(QueryString),而Transfer 方法则可以保留这些数据。

2、QueryString 的使用最简单最常用的传值方法,与传统的 Get 方法相对应,使用变化相对较小。数据直接在URL 中以明文传递,对于用户来说是可见的,但是可以加密。此方法的优点是简单、方便,缺点是能传递的数据量少,而且不能传递对象。

3、Form 的使用通过表单中的控件来传递数据,与传统的Post 方法相对应,使用变化相对较大。

该方法的优点是可以传递大量数据,并且可以访问源页面控件中的数据;缺点是操作比较复杂,生命周期仅限于当前请求。

4、Session 的使用 Sessionss 对象为当前用户会话提供信息。

通过其属性可以方便地设置和检索ASP.NET 会话状态变量,这些变量的值在会话持续期间保留不变,并且可以被同一个会话中的所有页面访问,这就为页面传值提供了途径和方便。

该 方 法 的 特点是 :

(1)用户数据存储在服务器端;

(2)ASP.NET 中的Session 对象也可以不依赖Cookie 而正常工作;

(3)可以直接存储对象,且无大小限制;

(4)有效期与用户的活动时间有关,具体为用户活动时间+自定义延迟时间。该方法的缺点是:由于Web 应用程序对每个用户都会生成 Session 变量,因此它会随着用户数量的增多而加重服务器的负担。如果数据量比较小,Sessionss 对象是保存只需要在当前对话中保持的特定数据的极好位置。

5、cookic:该方法的缺点是:并非所有的浏览器都支持Cookie;用户可以禁用和删除它;信息采用明文保存,安全性差。当特定的用户需要特定的数据片,并且需要把数据在某个可变的时段中保持的时候,Cookie 就非常方便,存在于客户端,不占用服务器资源。

6、Static:静态变量,可能直接通类名来调用,优点是如果善加利用,则可以有效提高数据传递效率,缺点是如果滥用,则会导致用户或页面间数据紊乱,造成极大的隐患。

7、Cache 缓冲机制,大量的服务器资源来创建内容存在服务器内存中,提高应用程序性能,优点是:传递参数大小和数量没有限制,速度快。缺点是:当缓冲太多时,服务器会地缓冲采用优先级排序,把小的不常使用的清除掉,以此导致传参失败,相对操作机制也比较复杂。

8、Context 的使用 Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求、响应、以及上文中的Session 和 Application 等信息。可以使用此对象在网页之间共享信息,从而实现页面间的传值。与使用 Form 的方法类似,该方法也能保持大量的数据,缺点也相同,但使用方法相对比较简单。

9、ViewState 的使用 ViewState 是ASP.NET 用来在同一页面的多个请求之间保存和还原服务器控件视图状态的一种机制。与传统的“同一页面”不同,ASP.NET 中“同一页面”的每一个请求都会导致服务器重新生成该页面,但是新生成的页面并不包含原来页面的数据。ViewState 的任务就是保存原来页面中服务器控件视图状态的数据供新页面使用。从这个意义上讲, ViewState 也可以看作是一种在页面间传递数据的工具。 ViewState 的工作原理是:作为一个隐藏的窗体字段在客户端和服务器之间传递,可见,滥用ViewState 会加重页面回传的负担,从而降低应用程序的性能。

10、Web.config 和Machine.config 的使用 Web.config 文件用来设置每个ASP.NET 应用程序的一些属性,Machine.config 文件用来设置所有应用程序基础信息。这 2 种文件保存的数据一般都很小,多为明文,特别适合保存一些字符串常量, 如数据库连接信息。此外, Web.config 文件是可以扩展的,因此,也可以用来传递变量。因为这 2 种文件会被自动缓存,所以不存在因磁盘I/O 产生的性能瓶颈问题。