Control.SaveControlState メソッド

定義

ページがサーバーにポスト バックされた時間以降に発生したすべてのサーバー コントロール状態の変化を保存します。Saves any server control state changes that have occurred since the time the page was posted back to the server.

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

戻り値

サーバー コントロールの現在の状態を返します。Returns the server control's current state. このコントロールに関連付けられている状態がない場合、このメソッドは null を返します。If there is no state associated with the control, this method returns null.

次のコード例では、カスタム ASP.NET コントロールの SaveControlState メソッドをオーバーライドします。The following code example overrides the SaveControlState method in a custom ASP.NET control. このメソッドが呼び出されたときに、内部プロパティ currentIndex が既定値以外の値に設定されているかどうかを確認し、存在する場合は、コントロールの状態に値を保存します。When this method is invoked, it determines whether the internal property currentIndex is set to a non-default value and, if so, saves the value to control state.

OnInit メソッドは、PageRegisterRequiresControlState メソッドを呼び出して、カスタムコントロールがコントロールの状態を使用することを示すためにオーバーライドされます。The OnInit method is overridden to call the RegisterRequiresControlState method on the Page to indicate that the custom control uses control state.

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 メソッドを使用して、特定のコントロールの操作に必要な状態情報を保存します。Use the SaveControlState method to save state information required for the operation of a specific control. このコントロールの状態データは、コントロールのビューステートデータとは別に格納されます。This control-state data is stored separately from the control's view-state data.

コントロールの状態を使用するカスタムコントロールは、コントロールの状態を保存する前に、PageRegisterRequiresControlState メソッドを呼び出す必要があります。Custom controls using control state must call the RegisterRequiresControlState method on the Page before saving control state.

注意 (継承者)

コントロールの状態が保存されると、文字列オブジェクトが HTML HIDDEN 要素に格納されている変数としてクライアントに返されます。When control state is saved, a string object is returned to the client as a variable that is stored in an HTML HIDDEN element. コントロールで使用する状態情報を抽出するには、このメソッドをオーバーライドします。Override this method to extract the state information to use in your control.

コントロールの状態は、ページインデックスやキーワードなど、少量の重要なデータを対象としています。Control state is intended for small amounts of critical data, such as a page index or a keyword. 大量のデータに対してコントロールの状態を使用すると、ページのパフォーマンスに悪影響を及ぼす可能性があります。Using control state for large amounts of data can adversely affect page performance. 詳細については、「 ASP.NET State Management の概要」を参照してください。For more information, see ASP.NET State Management Overview.

適用対象

こちらもご覧ください