Ошибка компилятора при переопределении Page_PreInit - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь переопределить функцию Page_PreInit внутри моего класса _Default, которая наследуется от Page. Однако, когда я пытаюсь скомпилировать, я получаю следующую ошибку:

'_ Default.Page_PreInit (object, System.EventArgs)': не найден подходящий метод для переопределения

Вот мой код:

public partial class _Default : Page
{
    protected override void Page_PreInit(object sender, EventArgs e)
    {
        // Todo:
        // The _Default class overrides the Page_PreInit method and sets the value
        //  of the MasterPageFile property to the current value in the 
        //  selectedLayout session variable.

        MasterPageFile = Master.Session["selectedLayout"];
    }

    ...
}

1 Ответ

5 голосов
/ 23 января 2012

Класс Page объявляет открытое событие с именем PreInit и защищенный виртуальный метод с именем OnPreInit (который просто вызывает событие PreInit).Таким образом, у вас есть два варианта.

Вариант 1 (рекомендуется): Переопределение OnPreInit:

protected override void OnPreInit(EventArgs e)
{
    // Set the master page here...

    base.OnPreInit(e);
}

Вызов base.OnPreInit(e), чтобы страница подняла PreInit событие как обычно.

Опция 2: Создать метод с именем Page_PreInit.ASP.NET автоматически связывает этот метод с событием PreInit, если вы не установите AutoEventWireup в False в директиве @Page или в Web.config.

private void Page_PreInit(object sender, EventArgs e)
{
    // Set the master page here...
}

Если вы выберете эту опцию, не звоните base.OnPreInit, иначе вы получите бесконечную рекурсию.

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