ASP.NET页面之间的数据传递与保持7页word

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ASP页面之间的数据传递与保持

页面之间数据的传递与保持是实现网站与用户交互的重要手段之一,也是Web应程序的基本功能,它的实现效率对程序性能有直接的影响。ASP 提供了多种方法来实现数据的传递与保持,这些方法各有所长。以下对常用的几种方法做阐述。

一、数据在页面间的传递

在用户访问网站的过程中,页面之间的跳转总是非常频繁。用户通常点击页面上某个超链接而进入网站其它页面,也有可能点击某个按钮提交信息从而打开了目标页面,甚至是网页程序在某个条件达成时自动的页面重定向。无论哪种情况使得用户浏览时换了页面,都不能丢了用户的状态,也就是在用户本次访问网站过程中,其状态应该是连续的,有些数据必须在页面之间传递下去,以供目标页面获取。

目标页面可以通过Request对象来获取源页面传来的数据。

1.Request.QueryString

QueryString是最简单最常用的传值方法,它能够获取HTTP查询字符串附在URL后面的参数值:

URL?参数名1=参数值&参数名2=参数值......

而以URL方式进行页面转换有以下几种:

超链接:<a>标记的href属性或控件HyperLink的NavigateURL 设置URL后面可以连接参数;

控件Button的postbackURL属性可以设置目标页面URL,后面可以连接参数;

表单数据以get方法发送给指定的目标URL,会将控件值作为参数连接在URL后面,参数名就是控件名或控件ID,参数值就是控件的值;

Response对象的Redirect方法可以设置参数URL,使客户端浏览器立即重定向到指定的URL;

Session对象的Transfer方法可以设置参数URL将客户端重定向到新的页面,它终止当前页的执行,保留当前页面的表单(Form)数据和查询字符串(QueryString),并为当前请求开始执行URL指定的目标页面,而源页面已加载的数据依然保存。

Session对象的Execute方法可以设置参数URL将客户端重定向到新的页面,它暂停当前页的执行,并为当前请求开始执行URL指定的新页面,然后再回到源页面继续运行。

当然,用户在浏览器的地址栏输入URL时也可以直接传递参数。

通过查询字符串传递的数据直接在URL中以明文传递,对用户是可见的,虽然可以加密。此方法简单、方便,但是传递的数据量少,且不能传递对象。这种方式传递的数据,在目标页面可以用Request.QueryString 获取:

Request.QueryString[“参数名”]

2.Request.Form

Request.Form获取客户端传递的表单数据集,即页面表单以post方法发送的数据。该方法可以传递大量数据,访问源页面表单控件中的数据。

使用以上方法都可以实现数据在页面之间的传递,但是这个数据仅能在指定的URL页面才能获取到,也就是说生命周期仅限于当前请求。如果

某个数据在用户访问我们网站任何页面或者大多页面时都必须获取到,就需要随时传递,这样无疑增加了代码的复杂度,降低了性能。因此我们对于单个用户在各页面的浏览中都需要访问的数据,或者所有用户需要共享的数据,就要做成数据保持来提供任何页面自由获取,而不再要求初始页面进行传递发送。

二、数据保持

ASP常用的状态保持有四种,即视图状态、Cookie状态、会话状态、应用程序状态。

1.视图状态

视图状态ViewState就是本窗体的状态,用来在同一页面的多次请求之间保存和还原服务器控件视图状态。视图状态只能在本网页与服务器的往返中保持,不能在不同网页之间传递。默认情况下,所有服务器控件都具有保持视图状态的功能,也可以被控件、页面和应用程序禁用。如果控件中包含的数据量很大,将会延长网页往返所需时间,加重页面回传的负担,从而降低应用程序的性能。尽管视图状态存储在窗体页的隐藏域中,并且经过哈希函数的加密处理,但它仍然有可能被篡改,导致了潜在的安全问题。

2.Cookie状态

Cookie就是服务器暂时存放在你的电脑里的资料,由服务器端生成,为单个用户保留,发送并保存在客户端。Cookie作为“HTT P头”的一部分随着用户请求在Web服务器和客户端浏览器之间传递。与Web站点而不与具体页面关联,用户每次访问站点时,Web应用程序都可以读取Cookie,

所以无论用户请求站点中的哪个页面,浏览器和服务器都将交换Cookie

信息,这样就可以利用它来跟踪和保存用户的状态。

Cookie有两种。如果没有设置Cookie的有效期,它就是临时性Cookie,存放在客户端浏览器内存中,当浏览器关闭,临时性Cookie就会从内存中释放;如果设置有效期,它就是持久性Cookie ,以文本文件的格式存放在客户端硬盘中,这个Cookie会一直存在,直到过期或者其它原因被删除。

3.会话状态

Session对象是为单个用户保留的状态,保存在服务器端。会话是一个用户在一段时间内对站点的一次访问。会话时间可长可短,只要用户的Session没有超时,或者Abandon方法没有被调用,本次会话就没有结束,Session中的信息就不会丢失。会话期间用户在页面之间跳转,存储在Session对象中的变量不会被清除,因此可以被程序跟踪和访问。会话中可以存放任何类型的变量,且大小无限制。但是因为会话占用的是服务器端的内存,因此在放置大数据量对象时应慎重考虑。每一个新访问的用户都将创建自己的会话,在退出网站时撤销。因此对于不同的用户来说,他们的会话是不同的;对于同一用户的每次连接访问,其Session也不同,两次访问之间不能共享数据。 4.应用程序状态

Application对象用于存放应用程序中所有用户共享的信息。所有用户都可以对其进行修改,因此提供Lock方法用于锁定Application对象,阻止其他用户修改该Application对象中的变量,以确保在同一时间仅有一个用户可以修改和存取;Unlock方法用于解除Application对象的锁定

相关文档
最新文档