ASP.NET中如果需要保存页面的状态,就需要用到4个状态管理的对象
这四个状态对象依据不通的特点分别用于不通的地方、
Application对象,是一个服务器端的对象,它的作用范围是整个应用程序。
例如: 在网站中进行访问量的统计,就需要用到Application对象来进行保存
下图所列出的是Application 对象长用的属性和方法
//保存数据
//可以直接以Add方法来直接添加一个 Application
//Application中保存数据是以键值对的形式进行保存的。
Application.Add("key", 123);
//也可以先声明一个值类型的数据然后直接添加给一个键值
Student stu = new Student() { StuAge=15, StuId=10, StuName="Tom" };
Application["Tom"] = stu;
//当添加的数据在Application中已存在
//那么后添加的数据会对之前添加的数据进行覆盖
Student Jack = new Student() { StuAge = 16, StuId = 11, StuName = "Jack" };
Application["Tom"] = Jack;
//读取Application的方式也很简单,
//通过键来找到后直接输出就可以了
Student temp = Application["Tom"] as Student;
Response.Write(temp.StuAge);
//修改数据
//为了保证修改的有限性 ,先对Application对象进行锁定
//锁定以后就只能又当前的用户进行修改
Application.Lock();
Student stuTemp = Application["Tom"] as Student;
stuTemp.StuAge = 100;
//在修改结束以后在进行解锁
Application.UnLock();
Session对象也是服务器端的状态保存对象,它主要是针对一个会话来进行的。
例如: 购物网站购物车功能的实现
下图是Session对象的常用属性和方法
//首先在一个页面创建一个Session对象
UserInfo user = new UserInfo();
user.UserName = this.txtloginId.Text.Trim();
user.UserPwd = this.txtLoginPwd.Text.Trim();
//创建壹个Sessoin对象来保存数据
Session["UserInfo"] = user;
Session.Timeout = 1;//设置Session对象的过期时间,不设置的话默认是20分钟
//然后在另一个页面读取和输出这个对象
//Session 对象保存的object类型的数据,所以要记得类型转换
UserInfo user= (UserInfo)Session["UserInfo"];
Response.Write("欢迎," + user.UserName + "<br/>");
Cookie对象是客户端状态保存对象,它记录的是字符串形式的信息
Cookie只能保存4KB大小的文件,并且保存和输出的类型都是字符串类型的。
因为iCookie对象经常往返于客户端服务器之间用于交互。
所以它同时属于Response 和Request这两个对象
在创建方法二中,是可以设置Cookie的有效期的。
如果将时间设置为DateTime.MaxValue ,那么这个Cookie就永远不会过期
ViewStaff对象,客户端状态对象。
//设置viewstate
//ViewState对象也是采用 键值对的方式来保存数据
//可以保存简单的值类型数据
ViewState["name"] = "Tom";
//也可以保存一个对象
//但是要注意Student 对象要序列化
//就是要具有【Serializabe】这个特性
Student stu = new Student { StuId=1, StuAge=16, StuName="Tom" };
ViewState["Student"] = stu;
//读取ViewState
Response.Write(ViewState["name"].ToString());
//在读取的时候要进行数据类型的转换
Response.Write((ViewState["Student"] as Student).StuName);