Announcement

Collapse
No announcement yet.

LoadControl() initialisiert nicht richtig

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LoadControl() initialisiert nicht richtig

    Mittels der
    Code:
    Page.LoadControl(String)
    Page.LoadControl(Type, Object())
    lässt sich zu Laufzeit ein (benutzerdefiniertes) Steuerelement laden. Bei der Ersten Variante funktioniert das auch ganz gut. Nun hatte ich allerdings den Wunsch meinem benutzerdefinierten Steuerelement einen Konstruktor hinzuzufügen, mittels dem ich noch ein paar Objekteigenschaften setzen kann.
    Code:
    public partial class myWebUserControl : System.Web.UI.UserControl
    {
        protected string _titleText;
    
        public myWebUserControl(string Title) : base()
        {
          _titleText = Title;
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
          litLabel.Text = _titleText;
        }
    }
    In der Folge Muss ich dann die zweite Variante in der Art
    Code:
    LoadControl(typeof(myWebuserControl), new object[] { "Test" });
    nutzen. Allerdings habe ich dabei dass Problem, dass wenn ich später im Load-Ereignis meines benutzerdefinierten Stuerelements auf ein Control, wie ein Literal zugreifen will, ich eine NullReferenceException bekomme.

    Was mache ich falsch, darf man einem WebUserControl keinen eigenen Konstruktor hinzufügen, oder muss man in dem noch auf einen anderen Basiskonstruktor verweisen?

  • #2
    Gerade selbst noch die Antwort gefunden. Anyways, falls jemand das gleiche Problem hat ... Das Grundproblem ist, dass bei der zweiten Variante, zwar die Klasse instantiiert wird aber ascx-File nicht bekannt ist und damit alle dort erfolgten Definitionen und Instantiierungen nicht erfolgen. Anders ausgedrückt der Binding-Prozess wird nicht ausgeführt. Kurzum sofern man nicht alles komplett im Quellcode macht, also die Steuerelemente dort instantiieren und hinzufügen, sollte man diese Methode nicht benutzen, sondern die erstere (LoadControl(string)).

    Comment

    Working...
    X