我了解Page PreRender事件以及覆盖OnPreRender,但不知道是否存在Page_PreRender方法。最近在浏览这个论坛的过程中,我发现并搜索了两者之间的差异,但是得不到多少?
以下是我的观察:
我有一个标签为Label1的页面。
情景1:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "load ";
}
protected override void OnPreRender(EventArgs e)
{
Label1.Text += "OnPreRender ";
base.OnPreRender(e);
}
private void Page_PreRender(object sender, System.EventArgs e)
{
Label1.Text += "Page_PreRender ";
}
Lable1的值为:加载OnPreRender Page_PreRender
情景2:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "load ";
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Label1.Text += "OnPreRender ";
}
private void Page_PreRender(object sender, System.EventArgs e)
{
Label1.Text += "Page_PreRender ";
}
请注意base.OnPreRender(e);
的通话顺序Lable1的值为:加载Page_PreRender OnPreRender
我只能说base.OnPreRender(e)正在调用Page_PreRender(),但它不是私有的吗?
有人可以说,两者之间有什么区别,何时使用哪个? 一般应该使用哪一个?
答案 0 :(得分:5)
页面的OnPreRender
方法负责提升Page_PreRender
事件。
通常您应该订阅Page_PreRender
事件。
如果您需要在提升Page_PreRender事件之前进行一些特殊处理,那么您可以在调用base.OnPreRender(e)
之前覆盖OnPreRender方法并进行处理。
答案 1 :(得分:2)
为您的网页设置Page_
时,系统会调用AutoEventWireup="true"
个事件。这就是你如何创建它们并在没有明确连接的情况下调用它们的方法。