我需要创建一个代码QueryString
的代码,并在Session
上设置一个值,在页面的末尾我需要清除Session
。
如何在所有.aspx
页面上生成这样的代码?
答案 0 :(得分:8)
有两种可能性:
答案 1 :(得分:4)
我认为你有2个解决方案
使用母版页并在那里进行
继承页面并将其用作所有页面的基类
为什么必须将它存储在会话中?如果同一个用户同时执行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
}
}
}