ASP.net ViewState - Auch wenn deaktiviert, gibt es einige Viewstate. Warum?

8

Auch wenn auf der Seite die EnableViewState-Eigenschaft deaktiviert ist, sehe ich immer noch einige Viewstate auf der Seite:

%Vor%

Meine Frage ist warum?

    
TimLeung 05.01.2009, 15:57
quelle

6 Antworten

4

Dies könnten Steuerelemente sein, die ControlState verwenden. Jedes Steuerelement, das über einen Steuerungsstatus verfügt, ignoriert Ihre ViewState-Einstellungen.

    
Andrew Hare 05.01.2009, 15:59
quelle
8

Es ist der Kontrollstatus.

Wenn Sie viewstate und controlstate wirklich loswerden wollen, können Sie diesen Code im Code-Behind für die Seite oder in jeder Klasse verwenden, von der der Code-Behind abgeleitet ist

%Vor%

Seien Sie dabei jedoch sehr vorsichtig, da Sie den Vertrag mit den Steuerelementen verletzen. MSDN gibt explizit an, dass der Steuerungsstatus immer verfügbar ist. In der Praxis hat es jedoch für mich funktioniert.

Bearbeiten: Da ich abgelehnt wurde, möchte ich noch einmal darauf hinweisen: Tu das nicht, wenn du nicht genau weißt, was du tust. In meinem Fall wurde fast die gesamte Anwendung in clientseitigem JavaScript geschrieben, und bei diesen wenigen Ereignissen, bei denen Postbacks auftraten, verwendete ich immer die Request.Form-Sammlung, um die Werte abzurufen. Verwenden Sie keine serverseitigen Steuerelemente für etwas anderes als einfaches Rendern, wenn Sie dies tun.

    
erikkallen 05.01.2009 16:12
quelle
3

Dieser Artikel ist ein wenig alt, aber nach meinem Verständnis sind die meisten Punkte immer noch gültig:

  1. Sie müssen ein serverseitiges Formular-Tag () in Ihrer ASPX-Seite haben, wenn Sie ViewState verwenden möchten. Ein Formularfeld ist erforderlich, damit das ausgeblendete Feld, das die ViewState-Information enthält, zurück an den Server senden kann. Und es muss ein serverseitiges Formular sein, damit das ASP.NET-Seitenframework das ausgeblendete Feld hinzufügen kann, wenn die Seite auf dem Server ausgeführt wird.
  2. Die Seite selbst speichert etwa 20 Byte an Informationen in ViewState, mit denen PostBack-Daten und ViewState-Werte beim Postback an die richtigen Steuerelemente verteilt werden. Selbst wenn ViewState für die Seite oder Anwendung deaktiviert ist, sehen Sie möglicherweise einige verbleibende Byte in ViewState.
  3. In Fällen, in denen die Seite nicht zurückgibt, können Sie ViewState von einer Seite entfernen, indem Sie das serverseitige Tag auslassen.

Ссылка

    
brendan 05.01.2009 16:06
quelle
2

Dies ist ein absolut fantastischer Artikel über ViewState , wenn Sie entwickeln in ASP.NET lesen Sie es!

ASP.NET ViewState Helper ist auch ein nettes Werkzeug, um zu sehen, was in Ihrem ViewState vor sich geht

    
Gavin Miller 05.01.2009 19:32
quelle
0

Kontrollstatus kann die Ursache sein. Der Steuerungszustand kann nicht deaktiviert werden. In ASP.NET 2.0 wird zwischen Daten unterschieden, die zum Ausführen eines Steuerelements (controlstate) und anderen Daten (viewstate) erforderlich sind.

Und ja, einige der Steuerelemente funktionieren nicht ohne Steuerstatus. Wenn Sie wissen möchten, welches das verursacht oder was der Viewstatus enthält, sehen Sie sich einen viewstate viewer

    
Cohen 05.01.2009 19:22
quelle
0

Die Steuerelemente, die IPostBackEventHandler wie Textbox, Checkbox usw. implementieren . behält den Status auch nach Deaktivierung des Viewstatus bei. Der Grund dafür ist, dass während der Phase "Postback-Daten laden" diese Steuerelemente Statusinformationen aus dem Formular Zurückgebuchtes Formular erhalten.

Aber Steuerelemente wie Label , die IPostBackEventHandler nicht implementieren, erhalten keine Statusinformationen aus zurückgesendeten Daten und hängen daher vollständig von viewstate ab, um den Status beizubehalten.

    
Rajeev Singh 30.04.2013 07:23
quelle

Tags und Links