ASP.NET中的基页/派生页面事件模型

时间:2013-07-21 06:32:20

标签: asp.net

我在ASP.NET中编写了以下代码

我有一个基页:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Base Page Called");

    }

我有一个派生页面,其中包含以下代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Derived Page Called");

    }

现在,当我调用Derived页面时,它不会调用Base Page的Page_Load。它显示

“派生的页面被调用”。

现在,如果我将Derived页面的Load事件处理程序名称更改为“Page1_Load”,并且实现如下,则调用Base页面。

  protected void Page1_Load(object sender, EventArgs e)
    {
        Response.Write("Derived Page Called");


    }

“调用基页”。

这种行为的原因是什么?

1 个答案:

答案 0 :(得分:1)

如果存在具有Page_Load名称的方法,则会自动连接Page_Load,因此如果在派生类中定义一个方法,它将从基础中隐藏一个。但是,它必须按名称进行匹配,因此通过为派生类中的一个提供后缀,它不再隐藏基本实现,因此它将获取基本实现并使用它。

如果您也将Page1_Load放在基座中,您将无法获得输出

Base:
protected virtual void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Base Page Called");

    }

Derived:

protected override void Page_Load(object sender, EventArgs e)
{
  base.Page_Load();
  Response.Write("Derived Page Called");
}

如果您想要两者都被称为

,请尝试以上操作