我希望能够在应用程序中加载任何页面的任何时候运行脚本。有什么地方我可以简单地添加这个吗?或者我是否必须在每个页面加载中添加代码?
答案 0 :(得分:26)
你可以做以下三件事之一:
在您的应用中使用 base page ,并让您的应用中的所有页面都从中继承。在基页的page_load事件中,执行您必须执行的操作。确保应用中的继承页面调用基页的page_load事件override page_load(通常这样做)。因为page_load被过度使用,所以我会给出相关建议,以便在另一个更合适的情况下查看all the page events(特别是page_prerender)。
使用 global.asax 页面中触发的事件,这些事件会在收到请求时发生。查看Application_BeginRequest事件。但是,那里有很多事件,所以check them all out以防其他事件更适合您的情况。 (就像常规页面事件一样,不要养成总是使用相同事件的坏习惯。)
每次发生的事情都有可能会进入 master page ,特别是如果布局相关的话。母版页似乎很可爱,但已证明自己的设计很好。如果您使用母版页的page_load事件来实现常用功能,则无需从每个内容页面的page_load中调用它;它每次after the called-page的page_load事件都会触发。 (我之所以提到这一点,是因为首先很容易混淆母版页和基页。)
答案 1 :(得分:5)
您可以在Global.asax
文件中使用BeginRequest事件。
http://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest.aspx
答案 2 :(得分:4)
您还可以创建并注册HTTP Module。这样做的好处是它们已在web.config中注册,因此您可以在运行时添加和删除它们,如果您需要...并且有多个。
答案 3 :(得分:1)
您可以为您的页面创建一个公共基类,它来自System.Web.UI.Page并在那里的OnLoad处理程序中添加代码。
答案 4 :(得分:1)
您可以通过拦截ASP.Net页面生命周期的任何方法,使用PageAdapters在每个aspx页面请求上注入代码。
本文可以帮助您了解其工作原理: http://dotnet.org.za/hiltong/archive/2008/01/06/injecting-a-page-base-class-in-asp-net.aspx
问候。