程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET中Control基類清理頁面狀態

ASP.NET中Control基類清理頁面狀態

編輯:關於ASP.NET

    控件開發時,有時候需要清除子控件的頁面狀態,比如在創建子控件時,以下是一個在數據綁定時清除視圖並創建子控件的應用場景:

    public override void DataBind()
    {
        base.OnDataBinding(EventArgs.Empty);
        Controls.Clear();
        ClearChildViewState(); //清理視圖狀態
        TrackViewState();
        CreateControlHierarchy(true);
        ChildControlsCreated = true;
    }

    本節介紹幾個清理頁面狀態的方法,主要由Control基類提供。

    1.HasChildViewState方法

    獲取一個值,該值指示當前服務器控件的子控件是否具有任何已保存的視圖狀態設置。如果有任何子控件具有已保存的視圖狀態信息,則返回true;否則返回false。

    2.IsChildControlStateCleared方法

    獲取一個值,該值指示當前控件中包含的控件是否具有控件狀態。如果該控件的子級不使用控件狀態,則返回true;否則返回false。

    3.ClearChildState方法

    同時清除子控件的視圖狀態和控件狀態。其方法體如下:

    protected void ClearChildState()
    {
        this.ClearChildControlState();
        this.ClearChildViewState();
    }

    4.ClearChildControlState方法

    清除控件狀態。其代碼如下:

    protected void ClearChildControlState()
    {
        if (this.ControlState >= ControlState.Initialized)
        {
            this.flags.Set(0x40000);
            if (this.Page != null)
            {
                this.Page.RegisterRequiresClearChildControlState(this);
            }
        }
    }

    控件狀態是通過方法:

    Page.RegisterRequiresControlState(this);

    將控件注冊為具有持久性控件狀態的控件。同時也要調用方法:

    this.Page.RegisterRequiresClearChildControlState(this);

    清除控件狀態,不同的是:此方法是內部方法。不供開發人員調用,只能通過ClearChild ControlState方法間接調用。

    5.ClearChildViewState方法

    此方法主要清除子控件的視圖狀態,其代碼結構如下:

    protected void ClearChildViewState()
    {
        if (this._occasionalFields != null)
        {
            this._occasionalFields.ControlsViewState = null;
        }
    }

    方法體中設置控件視圖狀態的IDictionary對象ControlsViewState為null。

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