ASP.net Viewstate - Selbst wenn deaktiviert, existieren einige Ansichtszustand. Warum?

StackOverflow https://stackoverflow.com/questions/413558

  •  03-07-2019
  •  | 
  •  

Frage

Auch wenn man auf der Seite, die EnableViewState Eigenschaft deaktiviert ist, ich sehe noch einigen Ansichtszustand auf der Seite vorhanden:

"<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="VkBAB3n5LZYtY+nTzk1vEu1P/6QLf4qzFIKzpFRJe3DMf8UseUA/1RsO409HJX4QhkROSP0umoJvatjK/q+jXA==" />"

Meine Frage ist, warum?

War es hilfreich?

Lösung

Dies könnte Kontrollen sein, die Control verwenden. Jede Steuerung, die staatliche Kontrolle hat ignoriert Ihre Viewstate-Einstellungen.

Andere Tipps

Es ist der Steuerzustand.

Wenn Sie wirklich wollen, loszuwerden Ansichtszustand zu erhalten und Control Sie diesen Code in das verwenden können Code-Behind für die Seite oder in einer beliebigen Klasse, die der Code-behind ergibt sich aus

class MyPage : Page {
    private class DummyPageStatePersister : PageStatePersister {
        public DummyPageStatePersister(Page p) : base(p) {}
        public override void Load() {}
        public override void Save() {}
    }
    private DummyPageStatePersister _PageStatePersister;
    protected override PageStatePersister PageStatePersister {
        get {
            if (_PageStatePersister == null)
                _PageStatePersister = new DummyPageStatePersister(this);
            return _PageStatePersister;
        }
    }

    // other stuff comes here
}

Seien Sie sehr vorsichtig, wenn dies zu tun, obwohl, da Sie den Vertrag mit den Kontrollen sind zu verletzen. MSDN heißt es ausdrücklich, dass Steuerzustand immer verfügbar ist. In der Praxis hat es jedoch für mich gearbeitet.

Edit: Da ich downvoted wurde, wie ich wieder hinweisen: Tu das nicht, wenn Sie genau wissen, was Sie tun. In meinem Fall wurde in clientseitige JavaScript fast die gesamte Anwendung geschrieben und auf die wenigen occations wo Postbacks aufgetreten, habe ich immer die Request.Form Sammlung mit den Werten abzurufen. Sie keine serverseitige Kontrollen für alles andere als einfach Rendering verwenden, wenn Sie dies tun.

Dieser Artikel ist ein wenig alt, aber nach meinem Verständnis der meisten Punkte sind nach wie vor gültig:

  1. Sie müssen eine serverseitige Formular-Tag () in der ASPX-Seite, wenn Sie Viewstate verwenden möchten. Ein Formularfeld ist erforderlich, damit das verborgene Feld, das die Informationen enthält, kann Viewstate auf den Server Post zurück. Und es muss eine serverseitige Form sein, so dass die ASP.NET-Framework das versteckte Feld hinzufügen kann, wenn die Seite auf dem Server ausgeführt wird.
  2. Die Seite selbst spart 20 oder so Bytes Informationen in Viewstate, die es Postback Daten und Viewstate-Werte an die richtigen Kontrollen auf Postbacks zu verteilen verwendet. Also, auch wenn Viewstate für die Seite oder Anwendung deaktiviert ist, können Sie ein paar verbleibenden Bytes in Viewstate sehen.
  3. In Fällen, in denen die Seite nicht zurück buchen, können Sie Viewstate von einer Seite durch Weglassen des Server-Seite-Tages.
  4. beseitigen

http://msdn.microsoft.com/en-us/library /ms972427.aspx

Das ist eine absolut fantastische Artikel über Viewstate , wenn Sie in ASP.NET entwickeln read it!

ASP.NET Viewstate Helper ist auch ein nettes Tool für das Sehen, was los ist in Ihrem Viewstate

Control können die Ursachen sein. Steuerzustand kann nicht deaktiviert werden. In ASP.NET 2.0 gibt es eine Unterscheidung zwischen Daten notwendig, eine Kontrolle der Arbeit (Control) zu machen, und anderen Daten (Ansichtszustand)

Und ja einige der Kontrollen funktionieren nicht ohne Control. Wenn Sie wissen wollen, welche es verursacht wird oder was der Ansichtszustand enthält Besuche ein Ansichtszustand Betrachter

Die Kontrollen, die Geräte IPostBackEventHandler wie Textbox, Checkbox, etc . behält den Zustand sogar den Ansichtszustand nach dem Deaktivieren. Der Grund ist, während die Lastpostback-Data-Phase, werden diese Kontrollen Zustandsinformationen von der Veröffentlichung zurück Form erhalten.

Aber Steuerelemente wie Label , die nicht implementieren IPostBackEventHandler wird keine Zustandsinformationen von zurückgesendet Daten erhalten und damit hängt ganz von Ansichtszustand den Zustand aufrecht zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top