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因此后代类可以调用它们.