Share via


Beibehalten des Status in einem Steuerelement

Ein ASP.NET-Serversteuerelement erbt eine Eigenschaft mit der Bezeichnung ViewState von Control, die es dem Steuerelement ermöglicht, ohne weiteren Aufwand an der Statusverwaltung teilzunehmen. Der Typ von ViewState lautet System.Web.UI.StateBag. Hierbei handelt es sich um ein Wörterbuch, das Name/Wert-Paare speichert. ViewState wird als eine Zeichenfolgenvariable vom ASP.NET-Seitenframework beibehalten und als ausgeblendete Variable an den Client und von diesem zurück gesendet. Beim Senden analysiert das Seitenframework die Eingabezeichenfolge aus der ausgeblendeten Variablen und legt Werte für die ViewState-Eigenschaft jedes Steuerelements fest. Wenn ein Steuerelement für Eigenschaftendaten anstelle eines privaten Feldes ViewState verwendet, wird diese Eigenschaft automatisch während der Clientschleifen beibehalten. (Wenn eine Eigenschaft in ViewState nicht beibehalten wird, ist es sinnvoll, beim Senden ihren Standardwert zurückzugeben.)

Das folgende Codefragment zeigt eine Eigenschaft, die in ViewState gespeichert wird.

public String Text {
          get {
              return (String) ViewState["Text"];
          }
          set {
              ViewState["Text"] = value;
          }
       }
[Visual Basic]
Public Property Text() As String
   Get
      Return CType(ViewState("Text"), String)
   End Get
   Set
      ViewState("Text") = value
   End Set
End Property

Ein Beispiel für die Verwendung von ViewState zum Speichern von Eigenschaften finden Sie unter Schnelleinstieg zu ASP.NET —> ASP.NET Web Forms —> Erstellen von benutzerdefinierten Steuerelementen.

Hinweis   ViewState wird im Allgemeinen zum Beibehalten von Formulardaten auf einer Seite bei Schleifen verwendet. Verwenden Sie ViewState nicht, um Informationen wie Kennwörter, Verbindungszeichenfolgen und Dateipfade zu speichern. Informationen zur seitenspezifischen Datenfreigabe oder zu dauerhafteren Speichermethoden finden Sie unter ASP.NET-Zustandsverwaltung.

Typen, die in "ViewState" beibehalten werden können

Ein Typ, der entweder serialisierbar ist oder einen speziell definierten TypeConverter besitzt, kann in ViewState beibehalten werden. Nur serialisierbare Typen sind jedoch langsamer und generieren einen deutlich größeren ViewState-Wert als Typen mit TypeConverter. ViewState wird mit Hilfe eines begrenzten Objektserialisierungsformats serialisiert, das für primitive Typen sowie für die Typen String, ArrayList und HashTable optimiert ist.

"ViewState" und Leistung

Bei der Entwicklung von Steuerelementen ist zu beachten, dass alle Daten in ViewState automatisch in Schleifen an den Client gesendet werden. Da Schleifen einen gewissen Leistungsaufwand erfordern, sollte ViewState überlegt verwendet werden. Wenn mehrere Eigenschaften von gemeinsamen Daten abhängig sind, können Sie die Leistung optimieren, indem Sie nur Schlüsselelemente in ViewState beibehalten. Ein Steuerelement erbt eine Eigenschaft mit der Bezeichnung EnableViewState von Control, die es den Anwendern des Steuerelements ermöglicht, deren Dauerhaftigkeit von ViewState zu aktivieren bzw. zu deaktivieren.

Anpassen der Statuswiederherstellung mit Hilfe von "ViewState"

Zur Erhöhung der Effizienz zum Speichern eines benutzerdefinierten Typs, der standardmäßig in ViewState nicht gespeichert werden kann, kann ein Steuerelement die Art und Weise der Speicherung von Eigenschaftendaten in ViewState anpassen. Bei dieser Anpassung muss das Steuerelement auch eine benutzerdefinierte Implementierung zur Wiederherstellung von Eigenschaftenwerten der in ViewState gespeicherten Daten bereitstellen. Die Control-Basisklasse besitzt hierfür zwei Methoden (SaveViewState und LoadViewState). Diese Methoden haben die folgenden Signaturen.

protected virtual object SaveViewState();
protected virtual void LoadViewState(object savedState);
[Visual Basic]
Overridable Protected Function SaveViewState() As Object
Overridable Protected Sub LoadViewState(ByVal savedState As Object)

Beispiele zum Außerkraftsetzen von SaveViewState und LoadViewState finden Sie unter Beispiel für ein datengebundenes Steuerelement mit Vorlagen.

Siehe auch

ASP.NET-Zustandsverwaltung | Sitzungszustand | Anwendungszustand