自定义ViewState的保存方式
点击次数:22 次 发布日期:2008-11-26 14:23:30 作者:源代码网
|
源代码网推荐 在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)。 源代码网推荐 源代码网供稿. |
