我能够钩住事件,还可以覆盖aspx代码隐藏文件中的load和init ..,事件。我有以下问题。

public partial class Default : System.Web.UI.Page
{
    public Default()
    {
        this.Init += Default_Init;
        this.Load+=Default_Load;
    }
    protected void Default_Load(object sender, EventArgs e)
    {        }
    protected void Default_Init(object sender, EventArgs e)
    {        }
    protected override void OnLoad(EventArgs e)
    {        }
    protected override void OnInit(EventArgs e)
    {        }
}


问:


为什么在Page类中存在这样的选项(虚拟方法和事件处理程序)?
当执行重写方法时,不执行我的事件处理程序(Default_Load和Default_Init)。背后的原因是什么?
我应该打电话给base.OnLoad(e);在重写的OnLoad方法?我为什么/不应该呢?

最佳答案

默认情况下,OnInitOnLoad不是InitLoad事件的处理程序。它们用于引发InitLoad事件。
覆盖时,您更改了这些方法的行为,因此,OnInitOnLoad方法不会触发事件(除非您显式编写base.OnInit等)。
如果更改OnLoad的行为并且不调用基本方法,则可能会中断asp.net应用程序的页面生命周期。例如,将不会调用Load事件。

07-28 01:38
查看更多