Обработчик Page.InitComplete не выполняется - PullRequest
1 голос
/ 18 августа 2011

Я столкнулся со странной проблемой при разработке элемента управления.Я зарегистрировал обработчик для события Page.InitComplete из элемента управления, но обработчик не выполняется.Мне нужно, чтобы обработчик выполнялся точно для события InitComplete , потому что я зависим от сложной архитектуры приложения.

Мой код выглядит следующим образом (Этот код находится внутри моего класса управления):

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

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

Однако OnInitComplete никогда не вводится.

Если это как-то возможно, я бы хотел найти способ зарегистрировать свой обработчик для события Page.InitComplete, не используя свой собственныйсобытия и странные хаки.

Кроме того, мне любопытно узнать причину такого поведения.

1 Ответ

1 голос
/ 22 сентября 2011

Извините - моя вина .Проблема была в пользовательском классе 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 не было вызова метода base.OnInitComplete - поэтому событие не было вызвано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...