• 添加Page_Init事件


    代码页中,默认都有个Page_Load()函数:

    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    }


    按照这个逻辑,添加Page_Init()、Page_PreInit()消息响应函数,如下:

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_PreInit(object sender, EventArgs e)
        {
            Response.Write("Page_PreInit事件");
            Response.Write("<br />");
        }
    
        protected void Page_Init(object sender, EventArgs e)
        {
            Response.Write("Page_Init事件");
            Response.Write("<br />");
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("Page_Load事件");
            Response.Write("<br />");
        }
    }


    这个默认的Page_Load()应该是一个照顾老的ASP.NET程序员习惯的方法。按照这种方法添加,要完全手工录入,并且录入过程中,没有智能提示,很容易出错。

    这时,我们应该认识到,Page_Init() 和Page_PreInit(),事实上是类Page中的消息响应函数,我们是在Page的派生类_Default.aspx中使用这两个函数的。

    在.NET 2.0中,事件的设计有一个建议,如果事件是给派生类使用的,就应该通过protected   virtual/override   On{EventName}的形式暴露给派生类,让派生类通过override来接受事件;而如果事件是给外部类使用的,就通过老的public   event   {EventName}的方式暴露。

    所以,在ASP.NET 2.0中,通过protected   override OnInit的方式来实现Init()和PreInit()比较好。

    直接输入override+空格,会有提示,按照这个提示,添加的Page_Init()、Page_PreInit()函数应该是这样的:

    public partial class _Default : System.Web.UI.Page 
    {
        protected override void OnPreInit(EventArgs e)
        {
            Response.Write("Page_PreInit事件");
            Response.Write("<br />");
    
            base.OnPreInit(e);
        }
        protected override void OnInit(EventArgs e)
        {
            Response.Write("Page_Init事件");
            Response.Write("<br />");
    
            base.OnInit(e);
        }
        protected override void OnPreLoad(EventArgs e)
        {
            Response.Write("Page_Load事件");
            Response.Write("<br />");
    
            base.OnPreLoad(e);
        }
    }


    当然,对于Page_Load事件,既然他放好一个Page_Load()给你,那就算了。如果不是偏执狂,没有必要修改成protected override void OnPreLoad(EventArgs e)。

  • 相关阅读:
    UVa OJ 102 Ecological Bin Packing (生态学装箱问题)
    最小生成树 zoj1586 QS Network
    最小生成树&并查集 POJ 1861 Network
    最小生成树&并查集POJ 1287 Networking
    2012年亚洲长春区域赛:K Yukari's Birthday
    最小生成树 ZOJ 1203 Swordfish
    HDU 2639 Bone Collector II
    POJ2528 Mayor's posters(区间替换&&线段切割)
    POJ2777 Count Color(区间修改&&懒惰标记&&位运算)
    (转)有关如何入门ACM
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211659.html
Copyright © 2020-2023  润新知