我正在运行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)
该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)