Frage

Hier sind die Grundlagen der mein Setup:

Ich habe eine Basepage Klasse, die von System.Web.UI.Page erbt. Basepage hat zwei Eigenschaften implementiert, so dass ihr get / set tut dies aus zwei verschiedenen Elementen in der Viewstate Sammlung (ex this.ViewState [ „Jahr“] aus dem Basepage).

ich eine weitere Klasse, die dann von Basepage erbt, es lässt nennen SpecificBasePage.

Schließlich, ich habe eine aspx Seite, die SpecificBasePage erbt.

Ich habe Bruchstellen hinzugefügt und viel Schreiten durch meinen Code getan und festgestellt, dass auf der ursprünglichen Seite zu laden, sind beide aus meiner Sicht Zustand Eigenschaften Werte zugewiesen und die Werte bestehen bleiben während des gesamten ersten Seite Last-Lebenszyklus.

Wenn die Seite jedoch zurückgesendet wird, während des Ereignisses Page Load und anderen Event-Handler (wenn die Viewstate geladen werden soll), kehren beide Eigenschaften null. Inspecting this.ViewState.Count zeigt, dass es keine Objekte in der Sammlung zurück.

Kann jemand denken Sie an etwas, das ich irgendwo sein könnte zu tun, dass die Viewstate bewirken würde und dieses Verhalten verursachen?

- Zusatz Ich habe es zu einem Teil meines Codes isoliert. Auf der Anfangslast, gebe ich die Ansichtszustand Eigenschaften Werte in OnInit, habe ich festgestellt, dass, wenn ich das OnLoad bewegen, bleiben die Werte für die Post zurück. Denke ich, auch wenn die addierten Ansicht Zustandswerte weder in dem ersten Seitenlebenszyklus bestehen bleiben, werden sie in der Post aufgegeben zurück?

War es hilfreich?

Lösung

Die Seiten haben könnten EnableViewState = false auf der aspx

Auch auf der web.config der Anwendung werden möglicherweise deaktiviert oder sogar für den gesamten Computer auf das Element.

Update 1: Auf dem asp.net Lifecycle, Viewstate wird nach Init geladen und vor Last weitere Informationen . Sehen Sie es wie alles auf init Teil der Deklaration der Seite betrachtet wird. Später lädt asp.net den Ansichtszustand, und danach beginnt es Änderungen am Ansichtszustand zu verfolgen. Es ist danach, dass asp.net keinen Unterschied zwischen den ersten Informationen über Ansichtszustand sehen und die geändertenen Informationen, so dass es zu Last bewegt vermeidet das Problem (als Ausgangszustand nicht da ist, und neuer Zustand ist, was Sie auf dem Ansichtszustand setzen) . Von dem obigen Link:

  

"Der Grund ist, weil die StateBag Klasse   nur verfolgt Änderungen an ihre Mitglieder   nach seiner Trackviewstate () Methode hat   wurde aufgerufen. Das heißt, wenn Sie eine haben   StateBag, jegliche und alle Ergänzungen oder   Modifikationen, die vorgenommen werden, bevor   Trackviewstate () ist, wird nicht gemacht   gespeichert, wenn der Save () Methode   aufgerufen. Der Trackviewstate ()   Verfahren ist am Ende der gerufenen   Initialisierungsstufe, die geschieht   nach der Instanziierung Stufe.   Daher ist die Anfangseigenschaft   Zuordnungen in der Instanziierung   bühnen während auf der Viewstate geschrieben   in der Menge Eigenschaften Accessoren-sind   nicht während der beharrte   Save () -Aufruf-Methode in der   speichern Ansichtszustand Bühne, weil die   Trackviewstate () Methode hat noch zu   aufgerufen. "

Andere Tipps

Hier ist eine ausgezeichnete Antwort ein anderer Benutzer über ASP.NET-Seite Lifecycle es ist ein Blick für Viewstate Fragen wert.

Außerdem haben Sie einen Blick auf „ wirklich zu verstehen Viewstate "

Wie ich in dem Teil angegeben habe ich später, offenbar du nichts in der Ansicht Zustand vor Laden der Seite einstellen, OBWOHL Asp.net keinen Fehler werfen, und es wird in der Ansicht Zustand während der anfänglichen existieren Lebenszyklus Seite, wird es nicht auf den Lebenszyklus des nachfolgenden anhalten Post zurück.

Werfen Sie einen Blick auf, wo Sie Sie Viewstate-Werte setzen. wireup möglicherweise Ihr OnUnload Ereignis und überprüfen Sie das Viewstate-Objekt nur um sicherzustellen, dass die Werte tatsächlich eingestellt zu werden.

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