加载对应Load事件和OnLoad方法对于这个事件相信大多数朋友都会比较熟悉用VSNet生成的页面中的Page_Load方法就是响应Load事件的方法对于每一次请求Load事件都会触发Page_Load方法也就会执行相信这也是大多数人了解ASPNet的第一步
Page_Load方法响应了Load事件这个事件是在SystemWebWebControlControl类中定义的(这个类是Page和所有服务器控件的祖宗)并且在OnLoad方法中被触发
很多人可能碰到过这样的事情写了一个PageBase类然后在Page_Load中来验证用户信息结果发现不管验证是否成功子类页面的Page_Load总是会先执行这个时候很可能留下一些安全性的隐患用户可能在没有得到验证的情况下就执行了子类中的Page_Load方法
出现这个问题的原因很简单因为Page_Load方法是在OnInit中被添加到Load事件中的而子类的OnInit方法中是先添加了Load事件然后再调用baseOnInit这样就造成了子类的Page_Load被先添加那么先执行了
要解决这个问题也很简单有两种方法
) 在PageBase中重载OnLoad方法然后在OnLoad中验证用户然后调用baseOnLoad因为Load事件是在OnLoad中触发这样我们就可以保证在触发Load事件之前验证用户
) 在子类的OnInit方法中先调用baseOnInit这样来保证父类先执行Page_Load