ASP.NET请求Global.asax中的页面

时间:2011-08-03 19:40:15

标签: asp.net

我希望能够全局获取对当前正在请求的Page对象的引用,因此我添加了一个Global.asax文件。

有没有办法做到这一点?我认为它与Application_BeginRequest事件有关。

4 个答案:

答案 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,这实际上非常简单)