3

我知道 Page PreRender 事件以及重写 OnPreRender,但不知道 Page_PreRender 方法的存在。最近在浏览这个论坛时,我发现并搜索了两者之间的区别,但没有得到太多?

这是我的观察:

我有一个标签为 Label1 的页面。

场景一:

    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

场景二:

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

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

4

2 回答 2

5

页面的OnPreRender方法负责引发Page_PreRender事件。

通常您应该只订阅该Page_PreRender事件。

如果您需要在安全引发 Page_PreRender 事件之前进行一些特殊处理,那么您可以重写 OnPreRender 方法并在调用之前进行处理base.OnPreRender(e)

于 2012-07-04T08:05:05.970 回答
3

为您的页面设置Page_时调用事件。AutoEventWireup="true"这就是您可以创建它们并在没有明确连接的情况下调用它们的方法。

于 2012-07-04T07:45:44.763 回答