При создании веб-элемента управления следует переопределить OnLoad или реализовать Page_Load

StackOverflow https://stackoverflow.com/questions/147033

  •  02-07-2019
  •  | 
  •  

Вопрос

Когда вы создаете новый пользовательский веб-элемент управления в Visual Studio, он по умолчанию добавляет событие Page_Load.В чем преимущество использования этого вместо переопределения базы OnLoad событие на элементе управления?Только ли это, что Page_Load событие срабатывает раньше OnLoad?

Это было полезно?

Решение

А OnLoad метод должен быть местом, где Load событие поднято.Лично я всегда стараюсь обработать событие, если только мне не нужно выполнять дополнительную обработку при его возникновении.

Я рекомендую обрабатывать само событие при нормальных обстоятельствах.

Другие советы

Вы можете найти это статья на жизненном цикле страницы от Microsoft полезно.

Как вы можете видеть выше, в основном это сводится к личному выбору, ЕСЛИ этот выбор сделан со знанием дела.Лучший быстрый, но подробный обзор, который я когда-либо видел, находится на http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

На самом деле это просто вопрос выбора.Мне кажется странным, что объект прикрепляет событие к самому себе, особенно когда есть метод, который можно переопределить.

Я думаю, что команда ASP.NET использовала события, потому что это была модель Global.asa в ASP, а также для того, чтобы снизить планку для разработчиков, которые не понимают наследование и переопределение виртуальных методов.

Переопределение метода требует дополнительных знаний о жизненном цикле страницы, но в этом нет ничего «неправильного».

Прочтите раздел под названием: «События страницы привязки» на странице MSDN под названием: «Модель событий управления веб-сервером ASP.NET» (ссылка на страницу) Есть некоторые полезные утверждения:

Один из недостатков AutoEventWireup Атрибут заключается в том, что он требует, чтобы обработчики событий страницы имели конкретные, предсказуемые имена.Это ограничивает вашу гибкость в выборе имен обработчиков событий.Еще одним недостатком является то, что производительность ухудшается, поскольку ASP.NET ищет методы во время выполнения.Для веб-сайта с большим объемом трафика влияние на производительность может быть значительным.

(AutoEventWireup флаг включает такие методы, как Page_Load)

Даже если вы наследуете от UserControl, Я думаю, вам следует избегать переопределения защищенных методов, если в этом нет необходимости.А Page_Load для того, чтобы вам было проще добавить код, специфичный для вашего UserControl.

Только переопределить OnLoad если вам нужен абсолютный контроль над тем, когда (/если) Load событие запускается (что должно быть редко, IMO).

я думаю, это то же самое.ИМХО, с Events у вас немного больше гибкости, потому что вы можете получить более одного прослушивателя вашего события!

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

Я имею в виду возможность контролировать последовательность выполнения.

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

Если вы используете событие, у вас нет никаких гарантий относительно порядка вызова.Это заставляет вас писать событие Load, которое не должно зависеть от того, что суперклассы делают на этапе загрузки.Я думаю, что это был бы предпочтительный подход, и, возможно, именно поэтому VS автоматически генерирует код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top