覆盖Page_PreInit时编译器错误

she*_*enn 0 c# asp.net events webforms master-pages

我试图覆盖继承Page_PreInit自我的类中的函数.但是,当我尝试编译时,我收到以下错误:_DefaultPage

'_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"];
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*Liu 5

Page类声明命名为公共事件PreInit,并命名为受保护的虚拟方法OnPreInit(这只是引发PreInit事件).所以你有两个选择.

选项1(推荐):覆盖OnPreInit:

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

    base.OnPreInit(e);
}
Run Code Online (Sandbox Code Playgroud)

调用base.OnPreInit(e)以便页面PreInit像往常一样引发事件.

选项2:创建一个名为的方法Page_PreInit.PreInit只要您未在指令或Web.config中设置AutoEventWireup,ASP.NET就会自动将此方法绑定到事件.False@Page

private void Page_PreInit(object sender, EventArgs e)
{
    // Set the master page here...
}
Run Code Online (Sandbox Code Playgroud)

如果选择此选项,请不要调用base.OnPreInit,否则最终会得到无限递归.