13

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

4

5 回答 5

26

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

  1. 在您的应用程序中使用一个基本页面,并让您的应用程序中的所有页面都继承自它。在基本页面的 page_load 事件中,做你必须做的事情。确保应用程序中的继承页面在覆盖 page_load时调用基本页面的 page_load 事件(它们通常会这样做)。而且由于 page_load 被过度使用,我会给出相关建议来查看所有页面事件(尤其是page_prerender),以防另一个更合适。

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

  3. 您每次想要发生的事情都有可能进入母版页,特别是如果它与布局相关。母版页看起来很可爱,但已经在良好的设计中证明了自己。如果您将母版页的 page_load 事件用于通用功能,则不必从每个内容页的 page_load 调用它;它每次在被调用页面的 page_load 事件之后触发。(我之所以提到这一点,是因为一开始很容易混淆母版页和基本页。)

于 2010-02-24T14:13:26.957 回答
5

Global.asax您可以在文件中使用 BeginRequest 事件。

http://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest.aspx

于 2010-02-24T14:14:34.863 回答
4

您还可以创建和注册一个HTTP Module。这样做的好处是它们已在 web.config 中注册,因此您可以根据需要在运行时添加和删除它们......并且拥有多个。

于 2010-02-24T14:25:58.927 回答
1

您可以为您的页面创建一个公共基类,从 System.Web.UI.Page 继承,并将代码添加到那里的 OnLoad 处理程序中。

于 2010-02-24T14:13:41.200 回答
1

您可以使用 PageAdapters 通过拦截 ASP.Net 页面生命周期的任何方法,在每个 aspx 页面请求上注入代码。

本文可以帮助您了解其工作原理: http: //dotnet.org.za/hiltong/archive/2008/01/06/injecting-a-page-base-class-in-asp-net.aspx

问候。

于 2010-02-24T14:22:48.903 回答