2009-03-20 13 views
5

Ho contentpage che sovrascrive l'evento OnInit di una pagina principale. L'override funziona bene, fino a quando non metto un controllo utente personalizzato nella pagina: in questo caso l'evento OnInit non viene attivato per la pagina dei contenuti (nessuna sostituzione viene utilizzata nel controllo utente)Utilizzo dell'evento OnInit in asp.net

Quali sono le possibili cause/soluzioni per Questo? (Io uso l'evento OnInit per creare controlli dinamici)


Edit:

ora ho provato questo nella pagina di contenuto:

(Le piste parte OnPreInit, ma Masters_Init non ottiene chiamato ...)

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

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

risposta

17

Stai chiamando la base. OnInit?

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

Aggiornamento

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

anche come accennato nei commenti mi sento di raccomandare non ignorando gli eventi se non si deve, ma se si deve essere sicuri di chiamare la base. così nella tua modifica sopra di esso dovrebbe essere

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

sicuro, ma l'evento non è sparare: in modo che non importa comunque – akosch

+0

si può solo sottoscrivere l'evento Init della masterpage invece di sostituzione OnInit? – bendewey

+0

Se non funziona inserisci un codice nella tua domanda. – bendewey

Problemi correlati