繁体   English   中英

在 asp.net 中使用 OnInit 事件

[英]Using the OnInit event in asp.net

我有 contentpage 覆盖母版页的 OnInit 事件。 覆盖工作正常,直到我在页面上放置一个自定义用户控件:在这种情况下,不会为 contentpage 触发 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM