我的内容页覆盖了母版页的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
    }

最佳答案

您是在调用base.OnInit吗?

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

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

另外,正如评论中所提到的,如果您不必这么做,那么我建议不要覆盖事件,但是如果您必须确保调用该事件,则不建议重写该事件。所以在上面的编辑中应该是
protected override void OnPreInit(EventArgs e)
{
  base.OnPreInit(e);
  base.Master.Init += new EventHandler(Masters_Init);
}

10-04 16:17