15 Stimmen

Warum sollten Sie jemals asp.net's ViewState Speicherobjekt über das Session-Speicherobjekt verwenden?

Abgesehen davon, dass der Sitzungsspeicher sitzungsübergreifend für mehr als eine Seite ist, warum sollten Sie überhaupt den Viewstate verwenden wollen, um Werte zu speichern?

Es scheint irgendwie lächerlich, irgendeine Art von Informationen außer ein paar kleinen Abfrage-String wie Werte, hin und her vom Client zum Server zu senden. Ich meine, was für eine Verschwendung von Bandbreite(!), nur für Speicherzwecke. Die Sitzung, während global über mehrere Seiten, scheint wie eine völlig überlegene Alternative zum Viewstate.

Insbesondere bei asp.net-Ajax-Steuerungen und -Varianten kann der Viewstate schnell aufgebläht werden, wenn man die verschiedenen Zustände und Variablen all dieser verschiedenen Steuerungen und HTML-Elemente verfolgt.

Aber warum gibt es dann überhaupt einen Viewstate-Speicher für Seitenvariablen und Objekte?

Vielleicht übersehe ich eine andere großartige Verwendung für den Viewstate-Speicher der Seite, weiß jemand etwas da draußen?

Vielen Dank fürs Lesen!

EDIT: Jeder hatte eine tolle Antwort, tut mir leid, wenn ich deine nicht ausgewählt habe.

4voto

Russ Punkte 11902

Das ist zwar keine direkte Antwort auf Ihre Frage, aber es könnte Ihr Problem lösen.

Sie können den Viewstate serverseitig speichern, wodurch die Nutzlast für den Client entfällt.

Erstellen Sie eine Klasse, die page erbt, und überschreiben Sie die PageStatePersister. http://msdn.microsoft.com/en-us/library/system.web.ui.sessionpagestatepersister.aspx

 public class RussPage : Page
    {
         protected override PageStatePersister PageStatePersister
        {
            get
            {
                return new SessionPageStatePersister(Page);
            }
        }
    }

2voto

andleer Punkte 21968

Das ist keine Antwort auf Ihre Frage, aber eine Ihrer Annahmen ist falsch.

Sitzungs-IDs können in der URL übergeben werden. Für die Sitzung sind keine Cookies erforderlich.

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

<sessionState cookieless="true" />

1voto

Charles Graham Punkte 23517

Wenn Sie eine Anwendung erstellen, bei der die Aufblähung des Viewstate größtenteils kein Problem darstellt, ist es besser, seitenbezogene Daten im Viewstate zu speichern, da dies die Leistung Ihres Servers verbessert. Wenn Sie mit Session oder Caching übertreiben, können Sie sich selbst mehr schaden als nützen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X