Если для атрибута AutoEventWireup
установлено значение false
, события необходимо связывать вручную. Однако я не могу заставить Page_PreInit
стрелять. Я предполагаю, что, возможно, я заставляю проводку происходить слишком поздно (, когда мы уже прошлиPage_PreInit
), но я не уверен, куда еще деть провода.
Например...
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
PreInit += new EventHandler(Page_PreInit);
Load += new EventHandler(Page_Load);
}
protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("Page_PreInit event fired!
"); //this is never reached
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load event fired!
");
}
Вышеупомянутый код приводит к "Событие загрузки страницы _запущено!" отображается, но ничего из Page_PreInit
. Я пробовал base.OnInit(e)
как до, так и после подключения, но это не дало никакого эффекта.
График, показанный здесь , говорит о том, что метод OnInit
на самом деле следует за событием PreInit
. Имея это в виду, я попытался переопределить OnPreInit
и сделать то же самое ---безрезультатно.
В статье MSDN здесь прямо говорится, что в случае, если для AutoEventWireup
установлено значение false
, события могут быть связаны в переопределении OnInit
. Они используют пример Page_Load
, и, конечно, он работает так же, как и для меня, но они не обращают внимания на то, что это не работает для события Page_PreInit
.
Мой вопрос: :, как я могу подключить событие Page_PreInit
в случае AutoEventWireup
, установленного на false
?
Я понимаю, что есть альтернативы, перечисленные на странице MSDN , например использование конструктора страницы. Я хотел бы конкретно знать, как поступить так, как они предлагают OnInit
.