从内联代码调用原始Page_Load函数

Mar*_*tin 8 .net asp.net code-behind inline-code

我喜欢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>
Run Code Online (Sandbox Code Playgroud)

但看起来只有内联代码中的Page_Load方法才会被执行,而不是原始代码隐藏文件中的那个(在编译的程序集中).

是否可以从我的内联代码中调用原始方法?或者是否有任何其他方法来添加应该在内联代码中调用Page_Load方法后直接运行而不修改现有程序集的内容?

SWe*_*eko 10

asp.net模型是.aspx文件中声明的页面实际上是继承自System.Web.UI.Page.aspx.cs文件中声明的类的后代类.

因此,调用了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> 
Run Code Online (Sandbox Code Playgroud)

没有可访问性问题,因为asp.net默认声明了Page_Load和类似的方法,protected因此后代类可以调用它们.