Viewstate von Ascx zwischen Postbacks verloren

In meiner ASP.NET-Anwendung lade ich eine .ascx dynamisch mit LoadControl nach folgendem Muster:

var ctrl = LoadControl("/path/to/control.ascx");
((ControlType)ctrl).SomeProperty = someData;
placeholder.Controls.Add(ctrl);

Das hinzugefügte Steuerelement speichert den Wert der SomeProperty-Eigenschaft wie folgt direkt in ViewState:

public int? SomeProperty
{
    get { return (int?)ViewState["SomeProperty"]; }
    set { ViewState["SomeProperty"] = value; }
}

Danach lebt die Ascx-Kontrolle ein Leben für sich und alles ist in Ordnung, bis ein Postback auftritt. Wenn die Seite zurückgesendet wird, ist der Ansichtsstatus plötzlich leer! Ich vermute, dass dies passiert, weil ich den ViewState manipuliere, bevor ich den instanziierten Ascx zu meiner Seite hinzufüge. Außerdem kann ich verhindern, dass der ViewState verloren geht, indem ich die folgende Zeile in das Feld einfügePage_Load() Methode meiner Ascx-Kontrolle:

SomeProperty = SomeProperty;

Ich muss das oben genannte für jede Eigenschaft tun, um sicherzustellen, dass der ViewState erhalten bleibt. Gibt es eine schönere Möglichkeit, dies zu tun? Das Manipulieren des ViewState nach dem Hinzufügen der instantiierten .ascx-Datei zur Seite ist keine Option. Ich benötige den Inhalt des ViewState in derPage_Init() undPage_Load() Methoden, die ausgelöst werden, sobald ich die .ascx-Datei zu meiner Seite hinzufüge.

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage