程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net ViewState——運用

Asp.net ViewState——運用

編輯:關於ASP.NET

對於asp.net開發者,尤其是對控件開發感興趣的朋友來說,視圖狀態絕對是個讓人頭痛的問題.一直以來,我都很困惑,在網上尋覓了很久,這兩天才稍稍有了些眉目. 再鑒於本人一直潛水,因此決定今天就冒第一個泡泡吧.

當我們從Control或者WebControl派生新的控件時,我們不用定義ViewState屬性就可以使用改屬性了,因此它應該是派生下來的.當我們用reflector查看下源代碼就可以知道,它位於Control中.

protected virtual StateBag ViewState
{
  get
  {
  .
  }
  set
  {
  
  }
}

這裡又出現了一個StateBag新類型,它又是什麼什麼東西呢?我們還是從源代碼入手:

StateBag來自於System.Web.UI,它的聲明如下:

  public sealed class StateBag : IStateManager, IDictionary, ICollection, IEnumerable
  
   ............

這裡我們重點要關注的是IStateManager,因為在我們為自己的自定義控件定制視圖狀態管理時就需要從這個接口派生.但這次我先不討論它

從名字上來說,我們大致可以認為它是一個容器,一個裝'State'的容器.

下面讓我們看看StateBag的實現:

private IDictionary bag;
private bool marked;
public StateBag(bool ignoreCase)
    {
      this.marked = false;
      this.ignoreCase = ignoreCase;
      this.bag = this.CreateBag();
    }
private IDictionary CreateBag()
    {
      return new HybridDictionary(this.ignoreCase);
    }

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