Kann Asp.Net Usercontrols wissen, wenn sie hinzugefügt wir Sie ‚spät‘ an die Steuer Hierarchie?

StackOverflow https://stackoverflow.com/questions/1423021

Frage

Ich habe eine Benutzersteuerung, die den Standard if(!IsPostBack){//initialize myself} Paradigma nutzt wieder tun Initialisierung während Postbacks (so, Handel weniger DB trifft für eine erhöhte Nutzung Viewstate) zu vermeiden. Dieser Ansatz dient mir gut die meiste Zeit, aber es gibt einen Ort, wo ich dieses Steuerelement der Steuerhierarchie hinzufügen möchten ‚spät‘, während eines Postbacks.

Das ist natürlich verursacht die Initialisierung Logik zum Scheitern verurteilt, und die Steuerung in einem nicht initialisierten Zustand gebracht werden.

Was Wache soll ich verwenden, um festzustellen, ob ich initialisieren sollte, da !IsPostBack es nicht Schneiden? Ich könnte eine Fahne während LoadViewState gesetzt, aber das scheint ein bisschen hackish. Was ich möchte, zu finden ist eine Bedingung, die nur geschieht, wenn eine Kontrolle zunächst auf die Steuerungshierarchie hinzugefügt wird, und Schlüssel auf, dass. Ist ein solcher Zustand existiert?

[Bearbeiten] Beispiel Pseudo-Code folgt für die beinhaltende Seite:

protected void Page_Prerender(object sender, EventArgs e)
{
    Controls.Add(LoadControl("some_control.ascx"));
}

Gibt es eine Möglichkeit für some_control zu wissen, dass es gewesen ist hinzugefügt spät?

War es hilfreich?

Lösung 4

Weitere Suche führte mich nicht auf eine allgemeine Lösung für dieses Problem. Was ich am Ende tun war eine Fahne in Page_LoadViewState Einstellung, die der Kontrolle der Initialisierung unterdrückt -. Effektiv das gleiche wie die Initialisierung mit !IsPostBack bewacht, aber ein bisschen genauer

Andere Tipps

Sie können nicht verwenden Sie den Konstruktor Ihr Kind Steuerelemente zu initialisieren? (Oder eine Initialize-Methode erstellen) Dann steuern Sie, wenn die Steuerung initialisiert wird.

Vielleicht wird dies Ihnen helfen, Ihr Problem zu verstehen: „... was ist, wenn eine Kontrolle in einem Event-Handler erstellt und hinzugefügt dynamisch an den Steuerbaum? In diesem Fall spielt die Steuer Aufholjagd. Sobald es an die Steuerstruktur hinzugefügt wird, beginnt es seine Phasen auszuführen, bis es die aktuelle Phase der Seite erreicht ...“

Weitere Informationen hier:

http://weblogs.asp.net/vga /archive/2003/08/11/23498.aspx

Es ist nicht wirklich ein Konzept eine Steuerung für den „ersten“ Zeitpunkt der Zugabe, denn denken Sie daran, dass jedes Mal, wenn Sie eine Seite anfordern, ein neue Objekt erstellt, mit all neue Kontrollinstanzen. Zuvor erstellt Kontrollinstanzen auf Ihre neue Seite Objekt nicht hinzugefügt werden.

Warum wird die Initialisierung Logik scheitern? Vielleicht, wenn Sie diesen Code geschrieben können wir etwas vorschlagen -. Es nicht so scheint, dass sollte unbedingt der Fall sein muß

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