2009-03-20 17 views
5

Ich habe contentpage überschreiben das OnInit-Ereignis einer Masterseite. Die Überschreibung funktioniert einwandfrei, bis ich ein benutzerdefiniertes Benutzersteuerelement auf der Seite einfüge: In diesem Fall wird das OnInit-Ereignis für die Inhaltsseite nicht ausgelöst (in der Benutzersteuerung werden keine Außerkraftsetzungen verwendet)Verwenden des OnInit-Ereignisses in asp.net

Was sind die möglichen Ursachen/Lösungen für? Dies? (Ich benutze das OnInit Ereignis dynamische Steuerelemente erstellen)


Edit:

jetzt habe ich versucht, dies in der Content-Seite:

(The OnPreInit Teil läuft, aber Masters_Init nicht erhalten genannt ...)

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

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

Antwort

17

Rufen Sie die base.OnInit?

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

aktualisieren

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 
    } 
} 

als auch in den Kommentaren erwähnt ich die Ereignisse nicht überschreiben würde empfehlen, wenn Sie müssen nicht, aber wenn Sie müssen sicher sein, um die Basis zu nennen. so in Ihrem bearbeiten oben sollte es

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

sicher sein, aber das Ereignis feuert nicht: so es spielt keine Rolle sowieso – akosch

+0

Können Sie sich an das Init-Ereignis des Masterpage abonnieren statt überschreiben OnInit? – bendewey

+0

Wenn es nicht funktioniert, poste etwas Code in deiner Frage. – bendewey

Verwandte Themen