У меня есть BasePage с общими функциями, необходимыми для всех страниц. Я определил событие PreRender () на базе страницы. Есть 2-3 страницы, которые не требуют этой функциональности. Могу ли я отменить подписку на событие PreRender () BasePage со своей страницы .aspx. Я пытался привести BasePage к Page
(PageBase as Page).PreRender -= OnPreRender(new EventArgs());
, но он говорит, что PageBase - это тип, но используется как переменная. Как этого добиться. Пожалуйста, предложите.
Я добавляю событие PreRender () следующим образом:
public PageBase()
{
this.PreInit += new EventHandler(PageBase_PreInit);
this.PreRender += new EventHandler(PageBase_PreRender);
}
Ваш пример выглядит близко. Что, если вы попробуете:
base.Page.PreRender -= new EventHandler(Page_PreRender);
Это предполагает, что вы добавили событие, используя:
base.Page.PreRender += new EventHandler(Page_PreRender);
Другой вариант — переопределить метод OnPreRender в вашей базовой странице и использовать защищенное поле, чтобы проверить, нужно ли это делать. Для трех страниц установите значение false:
protected bool _useMyCustomPreRender = true;
protected override void OnPreRender(EventArgs e)
{
if (_useMyCustomPreRender)
{
// do my logic here
}
base.OnPreRender(e);
}