Мы все видели это, сидя там, ожидая кода, когда мы впервые открываем страницу в представлении кода. Удобный метод Page_Load (отправитель объекта, EventArgs e).
Ну, друзья, я здесь сегодня, чтобы сказать вам, что этот метод — зло. Правильно, этот хороший дружелюбный делегат на самом деле злой. И вот почему:
- Это поощряет делать все, когда страница загружается простым способом. И делать все это внутри этого одного метода. Я видел 300+ строковых методов Page_Load на тревожно регулярной основе. Я видел целые сайты, запрограммированные в методы Page_Load. Вероятно, 95% кода ASP.NET, работающего в этом мире, живет в методе Page_Load.
- Это запутывает жизненный цикл страницы от неопытных разработчиков. Слишком многие просто используют Page_Load, потому что это единственный известный им способ заставить код выполняться при запросе страницы, сохранить обработку событий обратной передачи.
- Page_Load слишком поздно что-то делать, например добавлять элементы управления, что вводит некоторых разработчиков в заблуждение.
- Page_Load слишком рано что-то делать, например, справляться с нажатиями кнопок, что вводит некоторых разработчиков в заблуждение
- С точки зрения удобства обслуживания, это затрудняет перемещение действий в разные места жизненного цикла страницы, когда это необходимо.
О, МОЙ БОГ! ЭТО ЗЛО! Что мне делать!?!?!?!
Итак, вы не должны использовать Page_Load, что использовать? Что ж, нужно просто связать события страницы вручную в конструкторе.
Почему это лучший метод? Во-первых, ваши действия могут быть логически сгруппированы в их собственные методы, вместо того, чтобы они представляли собой 20 линейных сегментов метода Page_Load () монстра. Во-вторых, и это самое важное, вы можете легко перемещать метод в жизненном цикле страницы, изменяя имя события, к которому он прикреплен. Наконец, у вас остался гораздо более чистый и понятный код.