2010-12-21 7 views
0

Betrachten Sie, ich habe 2 Kontrollen, C und CompositeC, die C enthält. Sowohl C als auch CompositeC haben ViewState.Wie erzwingen ViewState Wiederherstellung, nachdem untergeordnete Steuerelemente neu erstellt werden?

Nun betrachten Sie eine dritte Kontrolle verursacht ein Postback.

Der resultierende Lebenszyklus wird wie folgt sein:

  1. CompositeC versucht Zustand wiederherzustellen. Dazu müssen die untergeordneten Steuerelemente erstellt werden, sodass C erstellt wird.
  2. Wenn C erstellt wird, wird ViewState wiederhergestellt.
  3. Das Postback-Ereignis des dritten Steuerelements wird ausgelöst. Zu diesem Zeitpunkt ruft ein Handler CompositeC.RecreatedChildControls() auf und C wird erneut erstellt.
  4. Alles rendert.

Das Problem ist, dass C Zustand nicht wieder nach dem Verfahrensschritt 3.en RecreateChildControls gestellt wird, sollte die staatliche Kontrolle ändern, so dass, wenn C zu der Sammlung wiedereingeführt wird die CompositeC Kontrolle ist Ansichtszustand automatisch gestellt wird, aber es funktioniert nicht.

Was soll ich tun?

Antwort

0

Eigentlich fand ich, dass dies von Entwurf ist und es Sinn macht. ViewState soll die Statuswiederherstellung nach einem Postback ermöglichen. Wenn ich danach meine Kontrollen neu erstelle, wird es nicht stattfinden.