Search code examples
asp.netcustom-server-controls

Page.InitComplete handler is not executed


I've run into a weird problem while developing a control. I've registered a handler for Page.InitComplete event from the control, but the handler is not executed. I need the handler to be executed exactly on InitComplete event, because I depend on complex application architecture.

My code looks like this (This code is placed inside my control class):

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

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

However OnInitComplete is never entered.

If it is somehow possible I would like to find the way to register my handler to Page.InitComplete event without using my own events & weird hacks.

Apart from that I'm curious about the reason of this behaviour.


Solution

  • I'm sorry - my fault. The problem was in custom PageBase class :

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

    The Page.OnInitComplete method is implemented in the following way :

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

    and in the overriden method of the PageBase there was no call of the base.OnInitComplete method - that is why the event was not raised.