在asp.net中使用OnInit事件

ako*_*sch 6 c# asp.net

我有内容页面覆盖母版页的OnInit事件.覆盖工作正常,直到我在页面上放置自定义用户控件:在这种情况下,内容页面不会触发OnInit事件(在用户控件中不使用覆盖)

有什么可能的原因/解决方案?(我使用OnInit事件来创建动态控件)


编辑:

现在我在内容页面中尝试了这个:

(OnPreInit部分运行,但Masters_Init不会被调用...)

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

    void Masters_Init(object sender, EventArgs e)
    { 
    //code 
    }
Run Code Online (Sandbox Code Playgroud)

ben*_*wey 19

你在叫base.OnInit吗?

public override void OnInit(EventArgs e)
{
  // code before base oninit
  base.OnInit(e);
  // code after base oninit
}
Run Code Online (Sandbox Code Playgroud)

更新

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
  }
}
Run Code Online (Sandbox Code Playgroud)

同样如评论中所提到的,如果你不需要,我建议你不要覆盖这些事件,但如果你必须确保打电话给基地.所以在你上面的编辑中它应该是

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