使用VS2008,C#。當AutoEventWireup
設置爲true,並在一個WebForm我打電話base.OnLoad(e)
這樣的:AutoEventWireup和base.OnLoad(e)調用自身導致堆棧溢出
protected void Page_Load(object sender, EventArgs e)
{
base.OnLoad(e);
}
的base.OnLoad(e)
結束調用Page_Load
(自稱)。這最終會導致堆棧溢出錯誤。我已經能夠通過設置AutoEventWireup
以虛假的和壓倒一切OnLoad
來解決這個問題:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
這工作如我所料(無堆棧溢出)。但任何人都可以解釋爲什麼在第一個例子中,base.OnLoad(e)
調用相同的加載事件(調用自己),而不是調用基類中的OnLoad
事件(System.Web.UI.Page
)?
但爲什麼base.OnLoad(e)沒有調用基類的Load事件? – 2009-02-19 01:52:29
它的確如此。這就是處理Load事件和調用base.OnLoad導致無限循環的原因。 – 2009-02-19 01:55:18