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を返します。

次のコード例では、カスタム ASP.NET コントロールの SaveControlState メソッドをオーバーライドします。 このメソッドが呼び出されると、内部プロパティ currentIndex が既定値以外に設定されているかどうかを判断し、設定されている場合は、その値を制御状態に保存します。

OnInit メソッドは、カスタム コントロールがコントロールの状態を使用することを示すために、PageRegisterRequiresControlState メソッドを呼び出すためにオーバーライドされます。

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 メソッドを使用して、特定のコントロールの操作に必要な状態情報を保存します。 このコントロール状態データは、コントロールのビューステート データとは別に格納されます。

コントロールの状態を使用するカスタム コントロールは、コントロールの状態を保存する前に、PageRegisterRequiresControlState メソッドを呼び出す必要があります。

注意 (継承者)

制御状態が保存されると、HTML HIDDEN 要素に格納されている変数として文字列オブジェクトがクライアントに返されます。 コントロールで使用する状態情報を抽出するには、このメソッドをオーバーライドします。

制御状態は、ページ インデックスやキーワードなど、少量の重要なデータを対象としています。 大量のデータに制御状態を使用すると、ページのパフォーマンスに悪影響を及ぼす可能性があります。 詳細については、「 ASP.NET State Management の概要」を参照してください。

適用対象

こちらもご覧ください