OnPreRender与Page_PreRender

时间:2012-07-04 07:42:57

标签: asp.net

我了解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(),但它不是私有的吗?

有人可以说,两者之间有什么区别,何时使用哪个? 一般应该使用哪一个?

2 个答案:

答案 0 :(得分:5)

页面的OnPreRender方法负责提升Page_PreRender事件。

通常您应该订阅Page_PreRender事件。

如果您需要在提升Page_PreRender事件之前进行一些特殊处理,那么您可以在调用base.OnPreRender(e)之前覆盖OnPreRender方法并进行处理。

答案 1 :(得分:2)

为您的网页设置Page_时,系统会调用AutoEventWireup="true"个事件。这就是你如何创建它们并在没有明确连接的情况下调用它们的方法。