不执行Page.InitComplete处理程序

时间:2011-08-18 14:39:24

标签: asp.net custom-server-controls

我在开发控件时遇到了一个奇怪的问题。我已从控件中注册了 Page.InitComplete 事件的处理程序,但处理程序未执行。我需要在 InitComplete 事件上执行处理程序,因为我依赖于复杂的应用程序架构。

我的代码看起来像这样(此代码放在我的控件类中):

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    this.Page.InitComplete += (sender, args) => OnInitComplete(args);
}

但是,永远不会输入 OnInitComplete

如果它在某种程度上可能,我想找到将我的处理程序注册到Page.InitComplete事件的方法,而不使用我自己的事件&奇怪的黑客。

除此之外,我很好奇这种行为的原因。

1 个答案:

答案 0 :(得分:1)

我很抱歉 - 我的错误。问题出在自定义PageBase类:

protected override void OnInitComplete(EventArgs e)
{
    if (!String.IsNullOrEmpty(FormAction) && FormActionInitComplete != null)
    {
        FormActionInitComplete(FormActionSender, FormAction, FormActionValue);
    }
}

Page.OnInitComplete 方法按以下方式实施:

protected virtual void OnInitComplete(EventArgs e) {
    EventHandler handler = (EventHandler)Events[EventInitComplete];
    if (handler != null) { 
        handler(this, e);
    } 
} 

并且在PageBase的overriden方法中没有调用 base.OnInitComplete 方法 - 这就是没有引发事件的原因。