Dot-Net
從內聯程式碼呼叫原始 Page_Load 函式
我喜歡 Monkey 修補一個 ASPX 網站,以便我可以在已編譯的程序集中向 Page_Load 方法添加內容。
我的第一個想法是將包含第二個 Page_Load 方法的腳本標記添加到 ASPX 文件中,如下所示:
<script language="CS" runat="server"> void Page_Load(object sender, System.EventArgs e) { // do some stuff in addition to the original Page_Load method } </script>但看起來只有內聯程式碼中的 Page_Load 方法將被執行,而不是來自原始程式碼隱藏文件(在編譯的程序集中)的方法。
是否可以從我的內聯程式碼中呼叫原始方法?或者是否有任何其他方法可以添加應該在從內聯程式碼中呼叫 Page_Load 方法後直接執行的內容,而無需修改現有程序集?
asp.net 模型是在.aspx 文件中聲明的頁面實際上是從.aspx.cs 文件中聲明的類繼承的子類
System.Web.UI.Page。因此呼叫您的 Page_Load 方法是因為它基本上隱藏了原始 Page_Load 方法。按照這個邏輯,你可以這樣做:
<script language="CS" runat="server"> void Page_Load(object sender, System.EventArgs e) { base.Page_Load(sender, e); // do some stuff in addition to the original Page_Load method } </script>沒有可訪問性問題,因為預設情況下 asp.net 聲明 Page_Load 和類似的方法,
protected以便後代類可以呼叫它們。