如何在所有aspx页面上运行代码?

时间:2010-09-03 14:21:51

标签: c# asp.net

我需要创建一个代码QueryString的代码,并在Session上设置一个值,在页面的末尾我需要清除Session

如何在所有.aspx页面上生成这样的代码?

7 个答案:

答案 0 :(得分:8)

有两种可能性:

  • 创建一个继承自System.Web.UI.Page的类。在那里插入代码,所有页面都从该类继承而不是System.Web.UI.Page。
  • 创建HttpModule

答案 1 :(得分:4)

我认为你有2个解决方案

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

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

  3. 为什么必须将它存储在会话中?如果同一个用户同时执行2个页面,则会出现问题(第一个完成后将清除另一个页面的sesson)

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

创建一个继承自Page的类,而不是Page

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

答案 4 :(得分:1)

将代码放在基页中,让所有.aspx页面都从基页继承。

答案 5 :(得分:0)

包含所有页面一部分的代码的简单方法是将Windows.Web.UI.Page子类化,并使所有页面都继承自此新类,而不是Windows.Web.UI.Page。新类可以独立于每个页面注册页面事件。

另一种选择,如果你不希望它成为每个页面的一部分,并且你想确保它运行,即使开发人员没有继承你的新页面子类,也就是编写一个HTTPModule。这将挂钩到ASP.NET处理管道,您可以触发管道事件,例如身份验证或显示页面。您也可以编写HTTPHandler并将其运行出管道。 (所有页面都实现了IHTTPHandler,在链的某个地方。)

答案 6 :(得分:0)

我使用编写类的方法继承自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
        }                                                
    }
}