Page_PreInit没有调用?

时间:2010-09-09 11:27:30

标签: c# page-lifecycle

我正在运行一个ASP.NET 4.0项目。

.aspx页面在标题中设置了AutoEventWireup="true"

虽然调用OnPreInit,但Page_PreInit不是?任何人都可以提出错误的建议吗?

protected void Page_PreInit(object sender, EventArgs e)
{
    Response.Write("bar");
}

protected override void OnPreInit(EventArgs e)
{
    Response.Write("foo");
    base.OnPreInit(e);
}

1 个答案:

答案 0 :(得分:2)

Page_PreInit事件会触发,如果在事件开始时放置断点并在运行时逐步执行此事件,则可以看到此事件。 字符串“bar”未写入屏幕的原因是它被OnPreInitEvent覆盖。

请参阅下面的代码。 逐步完成它,您会注意到它如何进入Page_PreInit,然后在OnPreInitEvent中被覆盖。 如果您注释掉整个OnPreInit事件,您会看到“Page_PreInit”被写入屏幕。

using System;

public partial class _Default : System.Web.UI.Page 
{
    string eventName = String.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(eventName);
    }

    protected void Page_PreInit(object sender, EventArgs e)
    {
        eventName = "Page_PreInit";
    }  

    protected override void OnPreInit(EventArgs e)
    {
       base.OnPreInit(e);
       eventName = "OnPreInit";
    }
}