Использование события 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);
}