程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET中基類Page_Load方法後執行原因分析

ASP.NET中基類Page_Load方法後執行原因分析

編輯:.NET實例教程

.

加載對應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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved