共用方式為


Control.SaveControlState 方法

定義

儲存頁面回傳至伺服器以來,所發生的任何伺服器控制項狀態變更。

protected public:
 virtual System::Object ^ SaveControlState();
protected internal virtual object SaveControlState ();
abstract member SaveControlState : unit -> obj
override this.SaveControlState : unit -> obj
Protected Friend Overridable Function SaveControlState () As Object

傳回

傳回伺服器控制項目前的狀態。 如果沒有與控制項關聯的狀態,則這個方法會傳回 null

範例

下列程式代碼範例會 SaveControlState 覆寫自定義 ASP.NET 控件中的方法。 叫用這個方法時,它會判斷內部屬性 currentIndex 是否設定為非預設值,如果是,則會將值儲存至控制狀態。

系統會 OnInit 覆寫 方法,以呼叫 RegisterRequiresControlState 上的 Page 方法,以指出自定義控件使用控件狀態。

public class Sample : Control {
    private int currentIndex = 0;
   
    protected override void OnInit(EventArgs e) {
        Page.RegisterRequiresControlState(this);
        base.OnInit(e);
    }

    protected override object SaveControlState() {
        return currentIndex != 0 ? (object)currentIndex : null;
    }

    protected override void LoadControlState(object state) {
        if (state != null) {
            currentIndex = (int)state;
        }
    }
}
Class Sample
  Inherits Control
  
  Dim currentIndex As Integer
  
      Protected Overrides Sub OnInit(ByVal e As EventArgs)
          Page.RegisterRequiresControlState(Me)
          currentIndex = 0
          MyBase.OnInit(e)
      End Sub
  
      Protected Overrides Function SaveControlState() As Object
          If currentIndex <> 0 Then
              Return CType(currentIndex, Object)
          Else
              Return Nothing
          End If
      End Function
  
      Protected Overrides Sub LoadControlState(ByVal state As Object)
          If (state <> Nothing) Then
              currentIndex = CType(state, Integer)
          End If
      End Sub
  
End Class

備註

SaveControlState使用方法來儲存特定控制項作業所需的狀態資訊。 此控件狀態數據會與控件的檢視狀態數據分開儲存。

使用控件狀態的自定義控件必須先在 上Page呼叫 方法,RegisterRequiresControlState才能儲存控件狀態。

給繼承者的注意事項

儲存控件狀態時,字串物件會以儲存在 HTML HIDDEN 元素中的變數的形式傳回給用戶端。 覆寫這個方法,以擷取控件中要使用的狀態資訊。

控制狀態適用於少量的重要數據,例如頁面索引或關鍵詞。 對大量數據使用控制狀態可能會對頁面效能造成負面影響。 如需詳細資訊,請參閱 ASP.NET 狀態管理概觀

適用於

另請參閱