页面传值小结

  from表单使用:通过表单的控件来传递数据,与传统的post方法相对应,使用变化相对较大。方法优点是可以传递大量数据,并且可以访问源页面控件中的数据;缺点是操作比较复杂,生命周期仅限于当前请求;

几个要点:首先在源页面中定义公共的变量和属性.其次,在目的页面的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

可永久

全局

字符串

不限

使用数据库或文件

永久

全局

全部

 

不限

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值