Организация методов обработчиков событий - PullRequest
1 голос
/ 13 июля 2011

Я использую asp.net и c # в веб-формах.

Используя Visual Studio, он автоматически создает методы обработчиков событий для моих элементов управления. VS генерирует имя метода следующим образом idControl_event. Я знаю, что могу дать любое имя методам обработчиков событий.

  • Так что мне интересно, какой твой любимый подход к теме именования.

  • Я хотел бы знать, можно ли с помощью веб-форм написать метод обработчика событий в отдельном классе (не в коде для конкретной веб-страницы) и как вызывать тему из элемента управления.

Спасибо за ваше время.

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Для имен обработчиков событий я обычно использую формат, который Visual Studio генерирует по умолчанию: [idControl] _ [eventName]. Но это очень личное / командное предпочтение. Я видел похожие дискуссии по этому поводу, такие как этот или этот . Независимо от того, как вы решите назвать обработчики событий, я думаю, что самое важное - оставаться последовательным.

Что касается наличия обработчиков событий вне вашего кода, я не видел, чтобы это делалось очень часто, но это возможно. Проще всего было бы иметь статический метод в отдельном классе с общей логикой обработки событий. Например, вот как у вас может быть стандартная логика для Page.Loaded в отдельном классе. Я считаю, что вам нужно зарегистрировать обработчик событий с помощью кода - я не думаю, что вы можете сделать это в разметке (aspx).

public static class CommonEventHandlers
{
    public static void Page_Loaded(object sender, EventArgs e)
    {
        //Do any standard logic

        //If you need a reference to the page that raised the event, 
        //   you can get it from the 'sender' parameter.
        Page page = (Page)sender;

        //Do something with 'page'
    }
}

Затем в коде страницы, который вы хотите использовать этот общий обработчик событий:

public partial class WebForm1 : System.Web.UI.Page
{
    public WebForm1()
    {
        //Register the handler via code in the constructor
        Load += CommonEventHandlers.Page_Loaded;
    }
}

В качестве другого варианта вы можете использовать наследование, чтобы помочь с повторным использованием кода. Например, у вас может быть базовый класс, от которого наследуются ваши страницы, со стандартными обработчиками. Одним из преимуществ этого является то, что вы можете зарегистрировать обработчики событий в разметке, даже если метод объявлен в базовом классе, поэтому вам не нужно ничего делать в коде позади страницы предка.

0 голосов
/ 13 июля 2011

Как сказал @Daniel Powell, я уверен, что лучшее, что вы можете сделать с событиями, это поместить их в другой файл как частичный класс для вашего кода.

Что касается соглашения об именах, в 95% случаев я вижу события, названные так, как вы сказали - idControl_event. Именно так я их называю, так как при просмотре исходного кода легко связать код с элементом управления.

0 голосов
/ 13 июля 2011

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

...