.net 从内联代码调用原始页面加载函数
我喜欢对ASPX网站进行修补,这样我就可以在编译的程序集中向Page_Load方法添加内容 我的第一个想法是向ASPX文件添加一个包含第二个Page_Load方法的脚本标记,如下所示:.net 从内联代码调用原始页面加载函数,.net,asp.net,code-behind,inline-code,.net,Asp.net,Code Behind,Inline Code,我喜欢对ASPX网站进行修补,这样我就可以在编译的程序集中向Page_Load方法添加内容 我的第一个想法是向ASPX文件添加一个包含第二个Page_Load方法的脚本标记,如下所示: <script language="CS" runat="server"> void Page_Load(object sender, System.EventArgs e) { // do some stuff in addition to the original Page_Load
<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>
无效页面加载(对象发送方,System.EventArgs e)
{
//除了最初的页面加载方法之外,还要做一些事情
}
但是看起来只有内联代码中的Page_Load方法将被执行,而不是原始代码隐藏文件(在编译的程序集中)中的方法
可以从内联代码中调用原始方法吗?或者有没有其他方法可以添加在内联代码中调用Page_Load方法后直接运行的内容,而无需修改现有程序集?是的:
void Page_Load(object sender, System.EventArgs e)
{
// Do some things before calling the original Page_Load
base.Page_Load(sender, e);
// Do some things after calling the original Page_Load
}
这样做的原因是ASP.Net框架在一个模型上运行,.aspx文件被编译成一个类,该类继承自代码隐藏文件中定义的类(实际上是由页面标记上的inherits
属性定义的类)
您也可以尝试使用预加载
方法。这些在页面加载之前被调用,可能是一种更干净的处理方式 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>
无效页面加载(对象发送方,System.EventArgs e)
{
基本页面加载(发送方,e);
//除了最初的页面加载方法之外,还要做一些事情
}
没有可访问性问题,因为asp.net默认声明Page_Load和类似的方法为受保护的
,因此子类可以调用它们。这对我很有用
<script language="CS" runat="server">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Response.Write("additional stuff");
}
</script>
受保护的覆盖无效加载(事件参数e)
{
基础荷载(e);
回复。写下(“其他材料”);
}
应该是base.Page\u Load(发送方,e);非常感谢你!
<script language="CS" runat="server">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Response.Write("additional stuff");
}
</script>