我知道页面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的值为: load 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的值为: load Page_PreRender OnPreRender
我只能说base.OnPreRender(e)正在调用Page_PreRender(),但它不是私有的吗?
有人能告诉我,两者和何时使用哪一个有什么区别吗?一般情况下,应该使用哪一个?
发布于 2012-07-04 16:05:06
该页的OnPreRender方法负责引发Page_PreRender事件。
通常,您应该只订阅Page_PreRender事件。
如果需要进行一些特殊处理,才能安全地引发Page_PreRender事件,则可以覆盖OnPreRender方法并在调用base.OnPreRender(e)之前进行处理。
发布于 2012-07-04 15:45:45
当为页面设置AutoEventWireup="true"时,将调用Page_事件。这就是在不显式连接的情况下创建和调用它们的方法。
https://stackoverflow.com/questions/11324556
复制相似问题