2012-07-12 2 views
5

Ich verfüge über ein Benutzersteuerelement, das abhängig von den Benutzereinstellungen dynamisch andere Benutzersteuerelemente hinzufügt. Ich habe Probleme beim Hinzufügen der Steuerelemente mit der überladenen LoadControl-Methode.Kann ich Benutzersteuerelemente mithilfe von Konstruktoren dynamisch erstellen?

Ich habe versucht, dies zu tun:

ddControl = typeof(DropDownControl), new object[] { testData, FilterModel.Models[i] }); 

jedoch keine der Kontrollen in ddControl wurde initialisiert und wenn ich die Datenquelle auf die Combobox zu setzen versuchte, es enthält, es explodierte. Ich gehe in einem Modell und einer Datenquelle an den Konstruktor, die Eigenschaften setzt, Standardwerte, usw. Habe ich eine loadmodel() Methode zu schaffen, um die Modellwerte zu laden, nachdem ich die Steuerung wie

(DropDownControl)LoadControl("~/WebUserControls/DropDownControl.ascx") 

oder erstellen können Ich mache das alles irgendwie durch den Konstruktor, während ich es dynamisch deklariere?

Wenn das nicht klar ist, lassen Sie mich wissen, wie ich es so machen kann. Vielen Dank!

+0

webforms & usercontrols sind allergisch auf Konstruktor Injektion. Am besten fügen Sie eine Methode hinzu, die Sie nach 'LoadControl' aufrufen, um die Injektion durchzuführen. –

Antwort

0

Sie können PlaceHolder verwenden, um diese Benutzersteuerelemente dynamisch hinzuzufügen und andere Vorgänge auszuführen, indem Sie eine entsprechende Methode bereitstellen. Auf diese Weise haben Sie mehr Kontrolle über alles, ohne den Lebenszyklus Ihres Steuerelements zu beeinträchtigen.

Verwenden Sie nicht stattdessen die Eigenschaften und Methoden des Konstruktors.

Verwandte Themen