我希望能够全局获取对当前正在请求的Page
对象的引用,因此我添加了一个Global.asax文件。
有没有办法做到这一点?我认为它与Application_BeginRequest
事件有关。
答案 0 :(得分:7)
您可以从global.asax访问当前处理程序(页面),但不能从任何stage of the request life cycle访问。即它在BeginRequest中是不可能的,但在PreRequestHandlerExecute:
期间是可能的void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
var page = (Context.Handler as System.Web.UI.Page);
}
请注意,如果处理程序不是页面,页面可能仍为null。另外,我不确定你的方法是否正确。也许你应该更详细地解释你想要尝试什么?
答案 1 :(得分:3)
创建一个类Page
的子类,它可以执行您想要的操作,并将此子类用作所有页面的基类型。
public class MyPage : Page
{
//... override whatever you want, add functionality, whatever
}
所有其他页面:
public class Index : MyPage
{
// Automatically get new behaviour
}
答案 2 :(得分:1)
您必须使用http模块来捕获应用程序中每个页面的每个请求,并根据请求执行任何操作。
答案 3 :(得分:1)
var page = HttpContext.Current.Handler as Page
if(page != null) /// do something with page
PreRequestHandlerExecute应该适用于您的目的(如果您不想写自己的HttpModule,这实际上非常简单)