2012-06-11 5 views
6

Wo ist ein ViewState gespeichert? Wird es auf Server- oder Client-Seite gespeichert?Wo wird ViewState gespeichert?

Ich habe eine riesige Datenmenge, die für einige Prozesse gespeichert werden sollte. Ich habe Session verwendet. Wenn Sie jedoch von einer Seite zu einer anderen wechseln, kann ich die Sitzung nicht löschen. Also dachte ich über die Implementierung von ViewState nach. Aber wenn ViewState mit einer großen Menge an Daten läuft, wirft er einen Fehler auf?

Wie kann ich das beheben?

+0

Sie schauen besser in den ASP.NET Cache, Sie könnten ihn für Ihre Bedürfnisse geeignet finden. –

Antwort

8

Viewstate wird auf der Seite selbst in codierter Form gespeichert. Sie können den Viewstate auf der Client-Seite nicht direkt aufrufen. Sie müssen die Encoding/Decoding-Algorithmen kennen, um die wertvollen Daten aus diesem Viewstate in den clientseitigen Code zu holen.

Sie können versteckte Variablen verwenden, um Daten zu speichern, die nur auf dieser Seite verwendet werden. Versteckte Variablen sind vom clientseitigen und serverseitigen Code aus zugänglich.

Sie können den Cache oder die Sitzung verwenden, um eine Datentabelle (große Daten) zu speichern. Sie werden eine gute Leistung im Vergleich zu ViewState haben.

Der Cache immer Speicher der Maschine verwendet, verwendet die Sitzung, was konfiguriert wurde:

In einer Web-Farm kann die Session lokal sein (was nur dann, wenn Affinität arbeitet gesetzt) ​​oder Remote (State-Server oder Datenbank oder benutzerdefiniert), aber der Cache ist immer lokal.

Wenn Sie also eine DataTable im Cache speichern, wird zwar Speicher belegt, aber die Serialisierung wird nicht verwendet.

PS: das Speichern eines DataSet anstelle einer DataTable ändert fast nichts.

Refer Cache Implementation

+0

lesen Sie mehr über Viewstate von http://msdn.microsoft.com/en-us/library/bb386448.aspx und http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- asp-net-4-0.aspx –

+0

"Sie können nicht auf den Viewstatus auf der Clientseite zugreifen.". In der Tat können Sie darauf zugreifen, da es nicht verschlüsselt ist (standardmäßig). Es kann jedoch nicht geändert werden, da es einen Hash enthält, der von ASP.NET überprüft wird. – Steven

+0

@Steven, ich stimme dir zu, dass wir auf den Viewstatus zugreifen können, aber es wird nicht nützlich sein, auf sie zuzugreifen, weil wir den tatsächlichen/dekodierten Wert aus der Variablen viewstate erhalten. –

7

Die Viewstate auf beiden Seiten gespeichert sind, nicht, dann ist es auf jeder Anfrage und Antwort hin und her zwischen dem Server und dem Browser senden, also ist es keine gute Idee, eine riesige Menge von Daten in Viewstate zu setzen .

1

Sparen Sie große Datenmenge im View-State verlangsamen Ihre Website. Verwenden Sie die Abfragezeichenfolge, um auf jeder Seite eine neue Kopie aus der Datenbank abzurufen, anstatt die gesamte Information von der vorherigen Seite zu speichern.

0

Anzeigen von Statusinformationen in verborgenen Feldern. In diesen ausgeblendeten Feldern werden Informationen zwischen Server und Client übertragen.

Für asp.net-Steuerelement .. standardmäßig implementiert .net View-Status für alle seine Kontrolle, das ist, warum ein Textfeld Wert nicht verloren, wenn wir auf eine Schaltfläche auf dieser Seite klicken.