Почему события WebControl имеют префикс «On»? - PullRequest
6 голосов
/ 17 июня 2009

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

Взять, к примеру, элемент управления Button. У него есть событие Click, к которому вы можете подключиться в выделенном фрагменте кода, но у него есть событие «OnClick» в файле .aspx / .ascx.

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

Кто-нибудь знает, почему добавлен префикс «Вкл»?

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

Ответы [ 4 ]

6 голосов
/ 17 июня 2009

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

4 голосов
/ 17 июня 2009

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

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

UserControl:

        public event EventHandler<ProjectSelectedEventArgs> ProjectSelected;

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

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

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

        uxProjectList.ProjectSelected += uxProjectList_ProjectSelected;

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

2 голосов
/ 17 июня 2009

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

0 голосов
/ 17 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...