是否有任何函数在您的应用程序中加载任何页面?

时间:2010-02-24 14:10:58

标签: c# .net asp.net page-lifecycle

我希望能够在应用程序中加载任何页面的任何时候运行脚本。有什么地方我可以简单地添加这个吗?或者我是否必须在每个页面加载中添加代码?

5 个答案:

答案 0 :(得分:26)

你可以做以下三件事之一:

  1. 在您的应用中使用 base page ,并让您的应用中的所有页面都从中继承。在基页的page_load事件中,执行您必须执行的操作。确保应用中的继承页面调用基页的page_load事件override page_load(通常这样做)。因为page_load被过度使用,所以我会给出相关建议,以便在另一个更合适的情况下查看all the page events(特别是page_prerender)。

  2. 使用 global.asax 页面中触发的事件,这些事件会在收到请求时发生。查看Application_BeginRequest事件。但是,那里有很多事件,所以check them all out以防其他事件更适合您的情况。 (就像常规页面事件一样,不要养成总是使用相同事件的坏习惯。)

  3. 每次发生的事情都有可能会进入 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

问候。