• PageBase类和OnInit方法[转帖]


    的确OnInit是最先执行的,  
                        override   protected   void   OnInit(EventArgs   e)  
                        {  
                                  //  
                                  //   CODEGEN:该调用是   ASP.NET   Web   窗体设计器所必需的。  
                                  //  
                                  InitializeComponent();  
                                  base.OnInit(e);  
                        }  
       
       
       
          加载  
       
                        加载对应Load事件和OnLoad方法,对于这个事件,相信大多数朋友都会比较熟悉,用VS.Net生成的页面中的Page_Load方法就是响应 Load事件的方法,对于每一次请求,Load事件都会触发,Page_Load方法也就会执行,相信这也是大多数人了解ASP.Net的第一步。  
       
                        Page_Load方法响应了Load事件,这个事件是在System.Web.WebControl.Control类中定义的(这个类是Page和所 有服务器控件的祖宗),并且在OnLoad方法中被触发。  
       
         
       
                        很多人可能碰到过这样的事情,写了一个PageBase类,然后在Page_Load中来验证用户信息,结果发现不管验证是否成功,子类页面的 Page_Load总是会先执行,这个时候很可能留下一些安全性的隐患,用户可能在没有得到验证的情况下就执行了子类中的Page_Load方法。  
       
                        出现这个问题的原因很简单,因为Page_Load方法是在OnInit中被添加到Load事件中的,而子类的OnInit方法中是先添加了Load事 件,然后再调用base.OnInit,这样就造成了子类的Page_Load被先添加,那么先执行了。  
       
                        要解决这个问题也很简单,有两种方法:  
       
      1)       在PageBase中重载OnLoad方法,然后在OnLoad中验证用户,然后调用base.OnLoad,因为Load事件是在OnLoad中触发,这样我们就可以保证在触发Load事件之前验证用户。  
       
      2)       在子类的OnInit方法中先调用base.OnInit,这样来保证父类先执行Page_Load  
       
       
       
      /////////////////////////  
      关于Page.ProcessRequest(HttpApplication类也有,可我不知道它们有什么区别)的基本处理过程是:  
       
      private   void   ProcessRequest()    
      {  
            //   确定请求是否是回发   (postback)  
      IsPostBack   =   DeterminePostBackMode();  
       
      //   触发   ASPX   源代码的   Page_Init   事件  
      PageInit();  
       
      //   加载   ViewState,处理已发送的值。  
      if   (IsPostBack)   {  
            LoadPageViewState();  
      ProcessPostData();  
      }        
       
      //   触发   ASPX   源代码的   Page_Load   事件  
      PageLoad();  

    转自: http://topic.csdn.net/t/20041004/09/3425847.html

  • 相关阅读:
    openerp学习笔记 模块结构分析
    Odoo文档管理/知识管理应用实践
    POSTGRESQL DEFAULT TEMPLATE0 НА UTF8 ENCODING
    could not execute command lessc odoo
    XPath 元素及属性查找
    pycharm 使用心得(四)显示行号
    mimetypes.py的UnicodeDecodeError
    win7源码运行odoo8.0错误
    xUtils 中的BitmapUtils 全面注释
    Android初级到高级指南(精华版)
  • 原文地址:https://www.cnblogs.com/liangwei389/p/1169950.html
Copyright © 2020-2023  润新知