代码之家  ›  专栏  ›  技术社区  ›  BrunoLM

如何使代码在所有ASPX页上运行?

  •  2
  • BrunoLM  · 技术社区  · 14 年前

    我需要创建一个代码来读取 QueryString 并在 Session 在页面的最后,我需要清除 会话 .

    我怎样才能让这样的代码运行在所有 .aspx 页?

    7 回复  |  直到 12 年前
        1
  •  8
  •   citronas    14 年前

    有两种可能性:

    • 创建从System.Web.UI.Page继承的类。在那里插入代码,所有页面都继承自该类而不是System.Web.UI.Page。
    • 创建httpmodule
        2
  •  4
  •   Peter    14 年前

    我看到了,你有两个解决方案

    1. 使用母版页并在那里执行

    2. 继承页面并将其用作所有页面上的基类

    有一个问题,为什么它必须存储在会话中?如果同一个用户同时执行两个页面,这将给您带来问题(第一个完成将清除另一个页面的sesson)

    如果只在页面运行时需要数据,可以将其保存在普通变量中,否则请使用VIEWSTATE!

        3
  •  4
  •   Kirk Woll    14 年前

    或者只使用global.asax: http://en.wikipedia.org/wiki/Global.asax

        4
  •  2
  •   user333306    14 年前

    创建从继承的类 Page 你将使用而不是 .

    或者,您可以使用 MasterPage 如果应用程序设计允许的话。

        5
  •  1
  •   fARcRY    14 年前

    通过将代码放在基页中并让所有.aspx页从基页继承。

        6
  •  0
  •   Cylon Cat    14 年前

    包含属于所有页面的代码的一个简单方法是将windows.web.ui.page子类化,并让所有页面继承自这个新类,而不是windows.web.ui.page。新类可以独立于每个单独的页面注册页面事件。

    另一个选择是,如果您不希望它成为每个页面的一部分,并且您希望确保它运行,即使开发人员不继承您的新页面子类,也要编写一个httpmodule。这将钩住ASP.NET处理管道,您可以触发管道事件,例如身份验证或显示页面。您可以编写一个httphandler并将其从管道中运行出来。(所有页面都在链的某个位置实现IHttphandler。)

        7
  •  0
  •   Vivian River    12 年前

    我用写类的方法来继承 System.Web.UI.Page . 但是,我没有发现这个方法的实现是显而易见的。下面是我最终编写的代码:

    public class BasePage : System.Web.UI.Page
    {                        
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            // Code here will be run when any page loads that inherits from BasePage
            }                                                
        }
    }