重写 Page_PreInit 时出现编译器错误

发布于 2024-12-28 20:50:27 字数 658 浏览 1 评论 0原文

我试图重写继承自 Page 的类 _Default 中的 Page_PreInit 函数。但是,当我尝试编译时,出现以下错误:

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

    ...
}

I am trying to override the Page_PreInit function inside my class _Default which inherits from Page. However, when I try to compile I get the following error:

'_Default.Page_PreInit(object, System.EventArgs)': no suitable method found to override

Here is my code:

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

    ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水溶 2025-01-04 20:50:27

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 的方法。只要您未在 @ 中将 AutoEventWireup 设置为 False,ASP.NET 就会自动将此方法绑定到 PreInit 事件。 Page 指令或在 Web.config 中。

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

如果您选择此选项,请不要调用base.OnPreInit,否则您将得到无限递归。

The Page class declares a public event named PreInit and a protected virtual method named OnPreInit (which just raises the PreInit event). So you have two options.

Option 1 (recommended): Override OnPreInit:

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

    base.OnPreInit(e);
}

Call base.OnPreInit(e) so that the page raises the PreInit event as usual.

Option 2: Create a method named Page_PreInit. ASP.NET will automatically bind this method to the PreInit event as long as you don't set AutoEventWireup to False in the @Page directive or in Web.config.

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

If you choose this option, don't call base.OnPreInit, or else you will end up with an infinite recursion.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文