我正在尝试覆盖继承自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"];
}
...
}
答案 0 :(得分:5)
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
的方法。只要您未在PreInit
指令或Web.config中将AutoEventWireup
设置为False
,ASP.NET就会自动将此方法绑定到@Page
事件。 / p>
private void Page_PreInit(object sender, EventArgs e)
{
// Set the master page here...
}
如果选择此选项,请不要拨打base.OnPreInit
,否则最终会收到无限递归。