Control.SaveControlState Metoda

Definicja

Zapisuje wszelkie zmiany stanu formantu serwera, które wystąpiły od momentu, gdy strona została opublikowana na serwerze.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

Zwraca

Zwraca bieżący stan formantu serwera.Returns the server control's current state. Jeśli z kontrolką nie jest skojarzony żaden stan, ta metoda zwraca null.If there is no state associated with the control, this method returns null.

Przykłady

Poniższy przykład kodu przesłania metodę SaveControlState w niestandardowej kontrolce ASP.NET.The following code example overrides the SaveControlState method in a custom ASP.NET control. Gdy ta metoda jest wywoływana, określa, czy właściwość wewnętrzna currentIndex jest ustawiona na wartość niedomyślną, a jeśli tak, zapisuje wartość w polu Stan formantu.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.

Metoda OnInit jest zastępowana, aby wywołać metodę RegisterRequiresControlState na Page, aby wskazać, że Kontrolka niestandardowa używa stanu formantu.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

Uwagi

Użyj metody SaveControlState, aby zapisać informacje o stanie wymagane do działania konkretnej kontrolki.Use the SaveControlState method to save state information required for the operation of a specific control. Dane stanu formantu są przechowywane niezależnie od danych stanu widoku kontrolki.This control-state data is stored separately from the control's view-state data.

Kontrolki niestandardowe korzystające z stanu kontrolki muszą wywoływać metodę RegisterRequiresControlState na Page przed zapisaniem stanu kontroli.Custom controls using control state must call the RegisterRequiresControlState method on the Page before saving control state.

Uwagi dotyczące dziedziczenia

Gdy stan kontroli jest zapisywany, obiekt ciągu jest zwracany do klienta jako zmienna, która jest przechowywana w elemencie 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. Zastąp tę metodę, aby wyodrębnić informacje o stanie do użycia w kontrolce.Override this method to extract the state information to use in your control.

Stan kontroli jest przeznaczony dla małych ilości danych krytycznych, takich jak indeks strony lub słowo kluczowe.Control state is intended for small amounts of critical data, such as a page index or a keyword. Użycie stanu formantu w przypadku dużych ilości danych może niekorzystnie wpłynąć na wydajność strony.Using control state for large amounts of data can adversely affect page performance. Aby uzyskać więcej informacji, zobacz ASP.NET State Management — Omówienie.For more information, see ASP.NET State Management Overview.

Dotyczy

Zobacz też