Ответ 1
Когда запрашивается страница, она вызывает различные события, которые считаются частью этого жизненного цикла. Я сохраняю визуальное представление
Я не понимаю, за что отвечает свойство страницы AutoEventWireUp
.
Во время серфинга в сети я нашел много форумов с дискуссиями об этом, и все они кажутся мне несоответствующими.
Могу ли я получить четкое объяснение того, что означает это свойство?
Я прочитал эту статью, но даже этого я не понимаю.
Когда запрашивается страница, она вызывает различные события, которые считаются частью этого жизненного цикла. Я сохраняю визуальное представление
Чтобы добавить к предыдущим ответам; автоматические крюки применяются от TemplateControl.HookUpAutomaticHandlers
. Этот метод вызывает TemplateControl.GetDelegateInformationWithNoAssert
, который содержит методы, которые рассматриваются как обработчики событий.
Это, в System.Web, версия 2.0:
Во всех классах, происходящих из Page: Page_PreInit
, Page_PreLoad
, Page_LoadComplete
, Page_PreRenderComplete
, Page_InitComplete
, Page_SaveStateComplete
.
Во всех классах, происходящих из TemplateControl: Page_Init
, Page_Load
, Page_DataBind
, Page_PreRender
, Page_UnLoad
, Page_Error
.`
Поддержка транзакций для всех классов, происходящих из TemplateControl:
Page_AbortTransaction
, или если он не существует, OnTransactionAbort
Page_CommitTransaction
, или если он не существует, OnTransactionCommit
System.Web, версия 4.0, ввел Page_PreRenderCompleteAsync
для всех классов, полученных из страницы. Этот метод, если он есть, будет зарегистрирован с помощью Page.RegisterAsyncTask и будет выполнен автоматически "непосредственно перед событием PreRenderComplete" (источник: Page.ExecuteRegisteredAsyncTasks). Этот метод кажется очень недокументированным, что предполагает, что было бы желательно просто вызвать Page.RegisterAsyncTask с помощью собственного метода.
Как упоминалось в статье, если вы включили AutoEventWireUp, asp.net автоматически распознает, что у вас есть метод с синтаксисом page_load и вызывается автоматически:
private void Page_Load(object sender, System.EventArgs e)
{
}
Это дает вам более чистый код за счет некоторых (очень) небольших накладных расходов. Обратите внимание: если вы не укажете его, вы должны явно указать asp.net, с которым вы хотите обработать событие загрузки страницы:
this.Load += new System.EventHandler(this.Page_Load);
Обратите внимание, что это относится к другим событиям на странице, поскольку оно использует соглашение об именах как Page_Event.