Der ganze Grund für Viewstate oder Session ist, das Web von einem zustandslosen System in ein dynamisches, individuelles Erlebnis zu verwandeln. Wenn ein Benutzer eine Seite anfordert, können Sie nur dann an der Stelle weitermachen, an der der Benutzer aufgehört hat, wenn Sie sich an den Zustand entweder auf dem Server oder auf dem Client des Benutzers erinnern.
Viewstate ist ein Mechanismus, um den Zustand des Benutzers auf dem Client zu speichern. Session ist ein Mechanismus, um den Zustand des Benutzers auf dem Server zu speichern.
Viewstate ist ein transienter Speichermechanismus. Bei Steuerelementen, die Viewstate verwenden, wird ihr Zustand als versteckte Eingabe in die HTML-Seite eingefügt. Um Manipulationen zu verhindern, ist er signiert. Er ist jedoch nicht verschlüsselt, so dass Sie es wahrscheinlich vermeiden sollten, irgendetwas Sensibles dort zu speichern. Viewstate ist nützlich für Situationen, in denen Sie über mehrere Anfragen (Seitenaufrufe) hinweg posten wollen. Ein Beispiel hierfür ist, wenn ein Formular nicht validiert wird, weil der Benutzer vielleicht eine falsche E-Mail-Adresse eingegeben hat, und Sie das Formular so wiederherstellen wollen, wie es war, bevor der Benutzer es abgeschickt hat. Der Nachteil dabei ist, dass der Viewstate ein hungriges Tier ist und leicht 30-50% der Seitengröße ausmachen kann.
Die Sitzung hingegen wird auf dem Server gespeichert. Der Client erhält ein Token, das dem Server mitteilt, welcher Speicherblock ihm gehört. Dies kann sehr viel sicherer sein als Viewstate, da die Daten nicht immer wieder an den Benutzer zurückgesendet werden. Allerdings gibt es auch Nachteile. Ihr Server kann keinen Speicher mehr haben. Oder der Benutzer könnte die Daten verlieren, wenn seine Sitzung unterbrochen wird.
Im Allgemeinen gibt es keine "richtige" Antwort auf die Frage, welche man verwenden sollte. Es kommt ganz darauf an, was Sie erreichen wollen.
Die meisten Dinge, die mit Kontrollen zu tun haben, sollten Viewstate verwenden. Wenn Sie jedoch mit sensiblen Informationen zu tun haben, sollten Sie Session verwenden. Wenn Sie Daten haben, die nur für eine bestimmte Anzahl von Seiten gelten, sollten Sie Viewstate verwenden. Wenn es sich um Daten handelt, die Sie während des gesamten Besuchs eines Benutzers auf Ihrer Website benötigen, sollten Sie Session in Betracht ziehen.