6 Stimmen

Verwendung des OnInit-Ereignisses in asp.net

Ich habe eine Inhaltsseite, die das OnInit-Ereignis einer Masterseite überschreibt. Die Überschreibung funktioniert gut, bis ich ein benutzerdefiniertes Steuerelement auf der Seite setzen: in diesem Fall das OnInit-Ereignis nicht für die Inhaltsseite Feuer (keine Überschreibungen in der Benutzersteuerung verwendet werden)

Was sind die möglichen Ursachen/Lösungen dafür? (Ich verwende das OnInit-Ereignis, um dynamische Steuerelemente zu erstellen)


Editar:

Ich habe das jetzt auf der Inhaltsseite ausprobiert:

(Der OnPreInit-Teil läuft, aber Masters_Init wird nicht aufgerufen...)

    protected override void OnPreInit(EventArgs e)
    {
        base.Master.Init += new EventHandler(Masters_Init);
    }

    void Masters_Init(object sender, EventArgs e)
    { 
    //code 
    }

19voto

bendewey Punkte 38830

Rufen Sie die Base.OnInit auf?

public override void OnInit(EventArgs e)
{
  // code before base oninit
  base.OnInit(e);
  // code after base oninit
}

Update

public class Page1 : Page
{
  public Page1 : base() {
    PreInit += Page_PreInit;
  }
  void Page_PreInit(object sender, EventArgs e)
  {
    Master.Init += Master_Init;
  }
  void Master_Init(object sender, EventArgs e)
  {
    //code
  }
}

Auch wie in den Kommentaren erwähnt würde ich empfehlen, nicht die Ereignisse überschreiben, wenn Sie nicht müssen, aber wenn Sie sicher sein, die Basis aufrufen müssen. so in Ihrem bearbeiten oben sollte es sein

protected override void OnPreInit(EventArgs e)
{
  base.OnPreInit(e);
  base.Master.Init += new EventHandler(Masters_Init);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X