论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

自定义ViewState的保存方式

文章类别:Asp.net | 发表日期:2008-10-5 22:11:32

大家都知道Asp.Net中使用ViewState来在客户端与服务端之间保存页面中的信息及用户自定义的信息.
在2.0之前的版本中,ViewState是保存在页面中的隐藏控件中的:__VIEWSTATE
我们无法改变ViewState的保存方式及保存位置.
现在在2.0中,Asp.Net开放了这个功能,允许我自定义ViewState的保存位置.
在2.0的Page类中新增了一个属性:PageStatePersister.
我们可以重写这个属性来实现自定义ViewState的保存.这个属性要返回一个继承自PageStatePersister类的子类的一个实例.
2.0中默认提供了两种保存方法:一个是保存在页面中(HiddenFieldPageStatePersister ),另外一个是保存在Session中(SessionPageStatePersister ).
下面的代码重写了PageStatePersister属性,将ViewState保存到Session中:

    protected override PageStatePersister PageStatePersister
    {
        get
        {
            return new SessionPageStatePersister(this);
        }
    }
除了这两种默认的保存方式外,我们可以继承PageStatePersister类,来实现自己的保存方式.
以下的代码演示了如果将ViewState保存到文件中:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;


/**//// <summary>
/// CWingViewState 的摘要说明
/// </summary>
public class CWingViewState : PageStatePersister
{
    public CWingViewState(Page page):base(page)
    {
    }

    public override void Load()
    {
        ReadFile();
    }

    public override void Save()
    {
        WriteFile();
    }

    private void WriteFile()
    {
        FileStream file = File.Create(@"C:\CustomerViewState.CW");
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(file, base.ViewState);
        file.Flush();
        file.Close();
    }

    private void ReadFile()
    {
        FileStream file = File.OpenRead(@"C:\CustomerViewState.CW");
        BinaryFormatter bf = new BinaryFormatter();
        base.ViewState = bf.Deserialize(file);
    }
}

具体的页面中:
    protected override PageStatePersister PageStatePersister
    {
        get
        {
            return new CWingViewState(this);
        }
    }


出处:.Net空间 BLOG

视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058