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.

次のコード例では、 SaveControlState カスタム ASP.NET コントロールのメソッドをオーバーライドします。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メソッドは RegisterRequiresControlState 、のメソッドを呼び出して、 Page カスタムコントロールがコントロールの状態を使用することを示すためにオーバーライドされます。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) {

    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)
          currentIndex = 0
      End Sub
      Protected Overrides Function SaveControlState() As Object
          If currentIndex <> 0 Then
              Return CType(currentIndex, Object)
              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.

コントロールの状態を使用するカスタムコントロールは RegisterRequiresControlState 、コントロールの状態を保存する前に、でメソッドを呼び出す必要があり Page ます。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.