几个要点:首先在源页面中定义公共的变量和属性.其次,在目的页面的html层次在前台写上
<%@ PreviousPageType VirtualPath="~/ScrFrom.aspx" %>
后台写上:previouspage.id(其中id就是源页面的属性和全局变量)
Session使用:session对象为当前用户会话提供信息。通过其属性可以方便地设置和检索asp.net会话状态变量,这些变量的值在会话持续期间保留不变,并且可以被同一个会话中的所有页面访问,这就是为页面传值提供了途径和方便。
该方法的特点:(1) 用户数据存储在服务器端;(2) asp.net中的session对象也可以不依赖cookie而正常工作;(3) 可以直接存储对象,而无大小限制;(4) 有效与用户的活动时间有关,具体为用户活动时间+自定义延迟时间。
该方法的缺点:由于web应用程序对悲歌用户都会生成session变量。因此他会随着用户数量的增多而加重服务器的负担。
用法:session[“id”]=123;
用的时候直接取值就好:但是用完务必给清除掉。Session.remove(id);
Application 的使用:application对象提供了对应程序状态的访问。与session对象相比,两只对数据的存储与访问都相似,不同之处在于:每个web应用程序只生一个application实例,并应用于所有的用户和会话;有效期为整个web应用程序的生命周期。因此,该方法非常适合存储那些数量少。不随用户变化而变化的常用数据。
在多用户并发访问控制方面,application对象采用了锁定机制,但是它串行化了对application对象的访问,而这对于应用程序来说有可能形成严重性能瓶颈。
在ASP.NET 2.0中,Application已经变得不是非常重要了。因为Application的自我管理功能非常薄弱,它没有类似Session的超时机制。也就是说,Application中的数据只有通过手动删除或者修改才能释放内存,只要应用程序不停止,Application中的内容就不会消失。在下一节中,我们会看到,可以使用Cache实现类似Application的功能,同时Cache又有丰富而强大的自我管理机制,总结一下Application的特性。
· 存储的物理位置。服务器内存。
· 存储的类型限制。任意类型。
· 状态使用的范围。整个应用程序。
· 存储的大小限制。任意大小。
· 生命周期。应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。
· 安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。
· 优缺点与注意事项。检索数据速度快,但缺乏自我管理机制,数据不会自动释放。
Cookie :
是网站存放在用户机器上得小块信息,主要用来保存一些用户相关的东西。
浏览器一般对cookie的使用进行了一些限制:1每个域最多只能在一台用户机器上存储20个cookie;2每个cookie的总尺寸不能超过4096byte。3一台用户的机器上cookie得总数量不能超过300个。
Response.cookie[“id”].value=””;
消除cookie。
Response.cookie[“id”].expire=now.addday(-1);
Cache :
以其他方法不同是。该方法需要设置缓存项优先级和缓存时间。因为当系统内存缺乏时,缓存机制会自动移除很少使用或优先级较低的项,而造成传值失败。
优点传递数据的大小和数量无限制,速度快。缺点是缓存机制的操作相对比较复杂。
Cache[“id”]读或写就行。
Context:
Context 对象包含与当前页面相关的信息,提供对整个上
下文的访问,包括请求、响应、以及上文中的Session 和
Application 等信息。可以使用此对象在网页之间共享信息,
从而实现页面间的传值。
与使用 Form 的方法类似,该方法也能保持大量的数据,
缺点也相同,但使用方法相对比较简单。示例如下:
Src.aspx:
Context.Items["id"]=TextBox1.Text;
Server.Transfer("Dst.aspx");
Dst.aspx:
Label1.Text=Context.Items["id"].ToString();
Context.Items.Remove("id"); //移除项
Viewstate:
ViewState 是ASP.NET 用来在同一页面的多个请求之间
保存和还原服务器控件视图状态的一种机制。与传统的“同
一页面”不同,ASP.NET 中“同一页面”的每一个请求都会
导致服务器重新生成该页面,但是新生成的页面并不包含原
来页面的数据。ViewState 的任务就是保存原来页面中服务器
控件视图状态的数据供新页面使用。从这个意义上讲,
ViewState 也可以看作是一种在页面间传递数据的工具。
ViewState 的工作原理是:作为一个隐藏的窗体字段在客
户端和服务器之间传递,可见,滥用ViewState 会加重页面
回传的负担,从而降低应用程序的性能。此外,ViewState 也
能被控件、页面和应用程序禁用。示例如下(在同一页面中):
ViewState["id"]=TextBox1.Text; //数据保存
Label1.Text=ViewState["id"].ToString(); //数据取出
ViewState.Remove("id"); //数据移除
传值方法比较
传值方法 | 生命周期 | 应用范围 | 数据类型 | 数据大小 |
使用QueryString | 与目标页有关 | 单用户 | 字符串 | 1KB |
使用Form | 当前请求 | 单用户 | 全部 | 不限 |
使用Session | 当前会话 | 单用户 | 全部 | 不限 |
使用Application | 应用程序 | 全局 | 全部 | 不限 |
使用Cookie | 可自定义 | 单用户 | 字符串 | 4KB |
使用Static | 变量应用程序 | 全局 | 全部 | 不限 |
使用Cache | 可自定义全局 | 全部 | 不限 |
|
使用Context | 当前请求 | 单用户 | 全部 | 不限 |
使用ViewState | 当前页 | 单用户 | 全部 | 不限 |
使用Web.config 和Machine.config | 可永久 | 全局 | 字符串 | 不限 |
使用数据库或文件 | 永久 | 全局 | 全部
| 不限 |