ASP.NET 的四种状态对象

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);

  

 

 

posted @ 2012-05-20 15:18  Sky.Grain  阅读(446)  评论(0编辑  收藏  举报