Я проходил статью о распространении событий в asp.net и узнал это, хотя возможно подписаться на событие щелчка кнопки пользовательского элемента управления от содержания страницы, "делание так нарушило бы некоторые объектно-ориентированные правила инкапсуляции". Лучшая идея состоит в том, чтобы опубликовать событие в пользовательском элементе управления, чтобы позволить любым заинтересованным сторонам обрабатывать событие.
Мой вопрос состоит в том, что точно то, как делает прямую подписку к событию щелчка кнопки от содержания страницы, нарушило бы объектно-ориентированные правила инкапсуляции?
Извинения, если это - немой вопрос.:|
Спасибо!
Кнопка должна быть инкапсулирована с помощью UserControl.
Если страница привязывается непосредственно к событиям на кнопке, тогда страница теперь зависит от внутренней работы UserControl.
Страница должна использовать UserControl, а не кнопку UserControl. Если автор UserControl позже захочет удалить кнопку и использовать какой-нибудь новый модный метод запуска своего события «Submit», ваша страница может быть повреждена, потому что кнопка может больше не существовать.
В этом отношении, если владелец UserControl в версии 1.1 решит переименовать кнопку с btnSubmit на SubmissionButton, это также может привести к поломке вашей страницы.
Лучше использовать UserControl и позволить ему заниматься своей внутренней работой.
Идея состоит в том, что кнопка элемента управления является деталью реализации пользовательского интерфейса элемента управления. Если вы повторно опубликуете событие щелчка, вы можете повторно реализовать эту кнопку как ImageButton, LinkButton и т. Д.
Я думаю, что можно прикрепить обработчик событий на уровне страницы к кнопке, если кнопка является постоянным элементом пользовательского интерфейса. Это экономит много кода события, особенно с большим количеством кнопок.