2009-02-09 4 views
1

Я динамически загружаю UC в Oninit главной страницы.Поднятие событий из динамически загружаемого пользовательского элемента управления

В Oninit UC я поднимаю событие. Я получаю исключение для ссылки. Код, как показано ниже:

//In the UC 

public event CommandEventHandler DoneProcessing; 
protected override void OnInit(EventArgs e) 
{ 
     //Raise a event 
     CommandEventArgs cmdEventArgs = new CommandEventArgs("done", "test"); 
     DoneProcessing(this, cmdEventArgs); 
} 

Когда я поднимаю событие в загрузке страницы вместо OnInit, он отлично работает, но я не могу этого сделать, так как я должен загрузить дочерний элемент управления и для вещей, чтобы правильно работать (ViewState и т. д.), мне нужно сделать это на OnInit.

ответ

0

Лучше всего всегда проверять нуль перед сборкой события, если нет обработчиков.

if (DoneProcessing != null) { 
    DoneProcessing(this, cmdEventArgs); 
} 
1

Я считаю, что вы пытаетесь сделать Event Bubbling. Вот Ode to Code Reference называется событие Bubbling от управления веб-пользователей в ASP.NET (C#)

Как уже упоминалось, я подозреваю, что вы можете остановить ошибку, используя стандартный

if (DoneProcessing != null) 
    DoneProcessing(this, cmdEventArgs); 

Однако я думаю, что корень в проблема все еще связана с тем, как загружается страница. Вокруг него есть хаки, но «правильный» (или рекомендуемый) способ сделать это - «Bubbling».

Смежные вопросы