,请尝试以上操作
我在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");
}
现在,当我调用派生页面时,它不会调用基本页面的page_Load。它显示
"调用的派生页"。
现在,如果我将派生页面加载事件处理程序名称更改为"Page1_Load",并且实现如下,那么就会调用Base页面。
protected void Page1_Load(object sender, EventArgs e)
{
Response.Write("Derived Page Called");
}
"调用了基页"。
这种行为的原因是什么?
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");
}
如果您希望两者都被称为