【问题标题】:OnPreRender vs Page_PreRenderOnPreRender 与 Page_PreRender
【发布时间】:2012-07-04 16:34:03
【问题描述】:

我知道 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 的值是: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(),但不是私有的吗?

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,您能否提供一些资源参考,我可以了解两者在 ASP .NET 页面生命周期中如何结合在一起?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多