2009-06-23 3 views
0

Ich bin verrückt geworden warum? Warum? Warum?Objekt wird nicht aus ViewState abgerufen

protected void Page_Load (object sender, EventArgs e) { AttachedPartnersViewState vs = Viewstate [SessionVariables.Company_AttachedPartnersViewState] als AttachedPartnersViewState;

protected override void OnUnload(EventArgs e) 
{ 
    ViewState[SessionVariables.Company_AttachedPartnersViewState] = _viewState; 

was auch immer ich mache. Ich versuche jedoch, diesen Viewstate zu speichern, es scheint beim Entladen in Ordnung zu sein. Dann, wenn die Seite geladen wird, ist sie wieder NULL, sie ruft NICHT ab, obwohl die Seite auf dem Postback ist.

das ist elementare Aktion, aber warum funktioniert es nicht?

BTW, Kontrolle des EnableViewState gilt

Gibt es irgendwelche Erklärungen?

Antwort

2

SaveViewState ist vor der Rendermethode. ViewState wird codiert und auf die Seite geschrieben, die zurückgesendet werden soll. Wenn Sie ViewState-Informationen nach dem Rendern hinzufügen, wird die Seite nicht zurückgeschrieben. Daher wird es auf dem Postback nicht wieder eingelesen. Stellen Sie sich ViewState als versteckten Input vor.

Links:

More on Page Lifecycle

More on ViewState

+0

Dank habe ich versucht, vor einem solchen Weg zu gehen, aber bevor machen es enorme Fehler verursacht. Es tritt nicht auf, während ich durch die Linie gehe, in der ich Objekt zu viewstate speichere (Debugger übertrug diese Linie ok), aber wenn Seite gerendert wird (es scheint so). Ausnahme vom Typ 'System.Web.HttpUnhandledException' wurde ausgelöst. --- Fehler beim Serialisieren des Werts 'MDSWebApp.Controls.AttachedPartners + AttachedPartnersViewState' vom Typ 'MDSWebApp.Controls.AttachedPartners + AttachedPartnersViewState'. – igor

+0

Dieser Fehler bedeutet, dass Sie versuchen, etwas in Viewstate zu speichern, das nicht serialisierbar ist. Alle Daten, die auf der Seite gespeichert werden, müssen serialisiert werden. Was versuchst du im Viewstate zu speichern? –

+0

Danke, mir mehr oder weniger bewusst, was ist die Natur dieses Fehlers) Ich versuche, Klasse zu speichern, die funktional Container ist, um meine Daten durch Postback zu tragen. Es enthält nur 3 Listen <> und 1 int. Aber wenn ich das gleiche über Session statt Viewstate (nur ViewState mit Session ersetzen), es serialisiert und ruft ohne Fehler, das ist seltsam. Die einzige Möglichkeit, die ich jetzt sehe, ist die Sitzung statt verwenden, obwohl es aus Sicht des Designs nicht ganz logisch richtig ist. sowieso, solche Verhalten von Viewstate immer noch seltsam und machen mich für seine weitere Verwendung gewarnt, – igor