Почему события WebControl имеют префикс "On"?

Я пытаюсь полностью понять модель событий WebForm (не жизненный цикл страницы, а то, как события подключаются при указании декларативно в .aspx или .файлов ascx.

берем кнопку, например. Он имеет событие щелчка, к которому вы можете подключиться в коде, но в нем есть событие "OnClick".аспн/.файл ascx.

Я использовал отражатель .NET, и элемент управления Button имеет защищенный метод OnClick, но он не должен быть доступен для назначения по.аспн/.ascx вносятся. Если я что-то упускаю.

кто-нибудь знает, почему добавлен префикс "On"?

просто чтобы уточнить немного: я понимаю, что соглашение об именах работает. Я хотел бы знать, как "OnClick "в.аспн/.ascx переводится на .Нажмите += новый EventHandler (blahName); т. е. если я создаю ControlChanged EventHandler, нужно ли мне делать что-то особенное, чтобы OnControlChanged отображался достоверно .аспн/.файл ascx?

4 ответов


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

например, у меня есть UserControl, который объявляет событие ProjectSelected. Чтобы добавить обработчик декларативно, я устанавливаю атрибут OnProjectSelected.

UserControl:

        public event EventHandler<ProjectSelectedEventArgs> ProjectSelected;

добавление обработчика декларативно:

        <user:ProjectList id="uxProjectList" runat="server"
            OnProjectSelected="uxProjectList_ProjectSelected" />

добавление обработчика в коде:

        uxProjectList.ProjectSelected += uxProjectList_ProjectSelected;

это смутило черт возьми меня дважды, один раз, когда я не мог понять, почему событие не было доступно декларативно, и снова, когда я назвал событие "OnProjectSelected", и атрибут стал "OnOnProjectSelected".


те хранят ссылки на делегатов, что вызывающий код будет подключаться с помощью событий; для того, чтобы различать само событие и делегат.


Это просто соглашение об именах, используемое при создании событий. Онсометингхэппен ... OnClick, OnChange, OnClose. Я не думаю, что есть что-то магическое и зловещее, это просто конвенции.


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