我正在运行一个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);
}
答案 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";
}
}