2009-03-20 18 views
5

Mam contentpage przesłanianie zdarzenia OnInit strony głównej. Nadpisanie działa poprawnie, dopóki nie wprowadzę niestandardowej kontroli użytkownika na stronie: w tym przypadku zdarzenie OnInit nie uruchamia strony zawartości (w sterowaniu użytkownika nie są używane żadne przesłonięcia).Korzystanie z zdarzenia OnInit w asp.net

Jakie są możliwe przyczyny/rozwiązania dla to? (Używam zdarzenie OnInit do tworzenia dynamicznych elementów sterujących)


Edit:

teraz próbowałem tego na stronie partnerskiej:

(część trasy OnPreInit, ale Masters_Init nie dostać o nazwie ...)

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

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

Odpowiedz

17

Czy dzwonisz do bazy.OnInit?

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

Aktualizacja

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

Ponadto, jak wspomniano w komentarzach Polecam nie przesłanianie zdarzenia, jeśli nie musisz, ale jeśli musisz mieć pewność, aby połączyć się z bazą. tak w edycji powyższego należy

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

pewno, ale zdarzenie nie jest wypalanie: tak nie ma znaczenia, tak czy owak – akosch

+0

można po prostu zapisać się do zdarzenia Init z masterpage zamiast override OnInit? – bendewey

+0

Jeśli to nie zadziała, zostaw jakiś kod w swoim pytaniu. – bendewey

Powiązane problemy