Page_PreInit没有调用?

max*_*axp 7 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);
}
Run Code Online (Sandbox Code Playgroud)

Den*_*els 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";
    }
}
Run Code Online (Sandbox Code Playgroud)