当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  自定义ViewState的保存方式

 自定义ViewState的保存方式

点击次数:22 次 发布日期:2008-11-26 14:23:30 作者:源代码网
源代码网推荐      大家都知道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
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华