Использование события OnInit в asp.net
У меня есть contentpage переопределение события OnInit masterpage. Переопределение работает нормально, пока я не помещу пользовательский элемент управления на страницу: в этом случае событие OnInit не срабатывает для contentpage (никакие переопределения не используются в пользовательском элементе управления)
каковы возможные причины/решения для этого? (Я использую событие OnInit для создания динамических элементов управления)
Edit:
теперь я попробовал это на странице содержимого:
(The Часть OnPreInit запускается, но Masters_Init не вызывается...)
protected override void OnPreInit(EventArgs e)
{
base.Master.Init += new EventHandler(Masters_Init);
}
void Masters_Init(object sender, EventArgs e)
{
//code
}
1 ответов
вы звоните на базу.Функции 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);
}