Почему распространение событий и почему не непосредственно подписывают событие щелчка?

Я проходил статью о распространении событий в asp.net и узнал это, хотя возможно подписаться на событие щелчка кнопки пользовательского элемента управления от содержания страницы, "делание так нарушило бы некоторые объектно-ориентированные правила инкапсуляции". Лучшая идея состоит в том, чтобы опубликовать событие в пользовательском элементе управления, чтобы позволить любым заинтересованным сторонам обрабатывать событие.

Мой вопрос состоит в том, что точно то, как делает прямую подписку к событию щелчка кнопки от содержания страницы, нарушило бы объектно-ориентированные правила инкапсуляции?

Извинения, если это - немой вопрос.:|

Спасибо!

5
задан Dienekes 2 July 2010 в 18:17
поделиться

2 ответа

Кнопка должна быть инкапсулирована с помощью UserControl.

Если страница привязывается непосредственно к событиям на кнопке, тогда страница теперь зависит от внутренней работы UserControl.

Страница должна использовать UserControl, а не кнопку UserControl. Если автор UserControl позже захочет удалить кнопку и использовать какой-нибудь новый модный метод запуска своего события «Submit», ваша страница может быть повреждена, потому что кнопка может больше не существовать.

В этом отношении, если владелец UserControl в версии 1.1 решит переименовать кнопку с btnSubmit на SubmissionButton, это также может привести к поломке вашей страницы.

Лучше использовать UserControl и позволить ему заниматься своей внутренней работой.

3
ответ дан 14 December 2019 в 13:25
поделиться

Идея состоит в том, что кнопка элемента управления является деталью реализации пользовательского интерфейса элемента управления. Если вы повторно опубликуете событие щелчка, вы можете повторно реализовать эту кнопку как ImageButton, LinkButton и т. Д.

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

3
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: