Подтвердить что ты не робот

Что означает свойство страницы AutoEventWireUp?

Я не понимаю, за что отвечает свойство страницы AutoEventWireUp.

Во время серфинга в сети я нашел много форумов с дискуссиями об этом, и все они кажутся мне несоответствующими.

Могу ли я получить четкое объяснение того, что означает это свойство?

Я прочитал эту статью, но даже этого я не понимаю.

4b9b3361

Ответ 1

Когда запрашивается страница, она вызывает различные события, которые считаются частью этого жизненного цикла. Я сохраняю визуальное представление

Ответ 2

Чтобы добавить к предыдущим ответам; автоматические крюки применяются от 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 с помощью собственного метода.

Ответ 3

Как упоминалось в статье, если вы включили 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.