2009-03-03 3 views
4

Ich versuche, meinen Kopf um die Steuerungsinfrastruktur zu wickeln, um zu verstehen, in welchen ASP.NET der Ansichtszustand beibehalten wird.Welche Steuerelemente haben ViewState beibehalten?

Es ist diese regelmäßige HTML-Steuerelemente ab: <input type="radio" checked="checked"/> -> Ich verstehe diese nicht über Ansichtszustand

Dann gibt es HTML-Steuerelemente mit runat = „server“ <input type="radio" checked="checked" runat="server"/> -> Ist der Ansichtszustand zwischen Postbacks beibehalten werden?

Dann gibt es ASP.NET-Steuerelemente <asp:TextBox id="txtMyText" runat="server"/> -> verstehe ich diese Ansichtszustand haben

wir einige benutzerdefinierte Steuerelemente, die HtmlTextBox <myPrefix:myTextBox id="txtMyText" runat="server"/> erben -> Ist das der gleiche wie Typ-2-oben?

Ist davon auszugehen, dass bei jeder Steuerung mit runat="server" Tag der Viewstatus beibehalten wird?

Antwort

6

Es gibt drei Arten von Steuerelementen, die Standard-HTML-Elemente wie HTML-Serversteuerelemente, denen das runat = server-Tag hinzugefügt wurde, sowie vollständige Websteuerelemente. Nur die Web-Steuerelemente haben viewstate beibehalten. mit der Viewstate Helfer-Software von Binary Fortress http://www.binaryfortress.com/aspnet-viewstate-helper/

Es gibt Ihnen einen Einblick in das, was vor sich geht

2

afaik nein, dass HTML-Steuerelemente nicht entworfen sind, um etwas im Viewstate zu erhalten, wenn Sie sich darum kümmern, nehmen Sie die Webcontrols.

3

Als wir begonnen ich Probleme mit Ansichtszustand mit - als auch helfen, mit Ansichtszustand bezogenen Performance-Probleme Sie die dekodieren ViewState mit einem Klick und sehen, was tatsächlich da drin ist - damit Sie verstehen, welche Steuerelemente viewstate verwenden und welche nicht, und genau, was sie dort speichern.

Auch etwas, das niemand sonst erwähnt hat, ist ControlState. Dies kam mit ASP.NET 2 und die Theorie ist, dass das wichtige Zeug, das für eine Kontrolle notwendig ist, in den Kontrollzustand geht, und die Daten usw. in der Viewstate, so dass Sie den Viewstate ausschalten und binden können Daten zu Ihrem Steuerelement auf jedem Postback und die Steuerung funktioniert im Grunde weiterhin mit Steuerstatus. Ich sage "Theorie", weil die Implementierung in der Praxis lückenhaft erscheint. Wenn Sie zum Beispiel den Dropdown-Listencode mit reflector betrachten, ist dies nicht korrekt implementiert. Dies könnte sich bei späteren Versionen des Frameworks geändert haben, da bin ich mir nicht sicher. Viele Informationen über die Kontrolle draußen, wenn Sie danach suchen, ich dachte nur, ich würde es erwähnen.

1

Wenn Sie die Ansicht Ihrer Seite anzeigen und den runat = "server" hinzufügen, wird der Viewstatus beibehalten.

Wie bei dynamisch hinzugefügten Steuerelementen hängt es davon ab, wann und wie Sie das Steuerelement der Steuerelementstruktur hinzufügen. Überprüfen Sie die akzeptierte Antwort auf this question, aber überprüfen Sie auch my question here.

+0

Dies ist falsch. Wie von @MikeW erwähnt, haben nur Web-Steuerelemente viewstate beibehalten. dies würde Viewstate nicht beibehalten, obwohl es runat = server hat – Bolo