程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 自定義ViewState的保存方式

自定義ViewState的保存方式

編輯:.NET實例教程

     大家都知道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
  
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved