Можно ли создать основной обработчик событий для многих страниц с пользовательским контролем или главной страницей? - PullRequest
3 голосов
/ 13 августа 2010

Мне нужно создать меню общих действий для моих страниц. На всех страницах будет реализована некоторая базовая функциональность, т.е. добавление новых строк в некоторую таблицу, их редактирование, вызов фильтров. Многие из этих страниц будут нуждаться только в базовой логике для запуска этой функции. Но некоторые страницы будут реализовывать свою собственную логику для опций в меню.

Я хочу сделать это, используя события в меню. Поэтому мне понадобятся не только события, но и некоторый базовый обработчик событий для всех страниц. И этот обработчик должен быть построен таким образом, чтобы его можно было переопределить. Проблема в том, что я не знаю, как создать обработчик для всех будущих применений меню. Звучит как-то утопично. Реально ли создавать такую ​​архитектуру?

Я думал о двух способах сделать это: мастер-страница или пользовательский контроль. Но я не знаю, возможно ли это вообще. Так что ты думаешь?

UPD: Проголосовали оба ответа об основных страницах: вы, ребята, наверняка знаете, о чем говорите. Благодарю. Извините, что правильный ответ может быть выбран только один раз.

Ответы [ 3 ]

1 голос
/ 13 августа 2010

Вы действительно не должны создавать экземпляры объектов на страницах без необходимости, так как этот подход наверняка сделает.необходимые методы.

  1. Создайте класс типа System.Web.UI.Page.(Давайте назовем его MyBasePageClass)
  2. Реализация общих методов, необходимых в этом классе
  3. Наследуйте этот класс на страницах, которые вам нужны для представления методов.Например, измените определение класса страницы Default.aspx на следующее: открытый частичный класс. По умолчанию: MyBasePageClass

Методы, созданные в MyBasePageClass, должны быть общедоступными, чтобы их мог видеть Default.aspx.cs.

1 голос
/ 13 августа 2010

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

Реализация может выглядеть примерно так:

public class MyApplicationPage : System.Web.UI.Page
{
    public virtual void RaiseMyCustomEvent(EventArgs e)
    {
    }
}

Ключевое слово virtual делает метод переопределенным.

В моем отдельном кодовом коде наследование страницы может выглядеть следующим образом:

public partial class MyPage : MyApplicationPage
{
    public override void RaiseMyCustomEvent(EventArgs e)
    {
        // ...
    }
}

Наконец, на моей главной странице я могу найти такой код в методе:

if (Page is MyApplicationPage)
{
    ((MyApplicationPage)Page).RaiseMyCustomEvent(EventArgs.Empty);
}
0 голосов
/ 13 августа 2010

Я думаю, что «создать обработчик для всех будущих применений» звучит страшно.

Что бы я сделал, чтобы создать страницы по отдельности, и только когда я определил какой-то логический элемент, который был бы равен или подобен, я бы преобразовал его в отдельный класс, который могли бы использовать несколько форм.

В конце концов, код необходимо использовать, прежде чем его можно будет повторно использовать.

...