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.

컨트롤 상태를 사용 하는 사용자 지정 컨트롤은 컨트롤 상태를 저장 하기 전에 Page에 대 한 RegisterRequiresControlState 메서드를 호출 해야 합니다.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 상태 관리 개요합니다.For more information, see ASP.NET State Management Overview.

적용 대상

추가 정보