从静态类访问Page的当前实例

时间:2010-03-22 19:46:05

标签: asp.net static

基本问题 - 是否可以从ASP.NET中的静态类访问当前的Page

我在想不,因为谷歌没有结果。

3 个答案:

答案 0 :(得分:27)

从技术上讲,您可以获取请求的当前IHttpHandler。由于Page实现了这一点,因此您可以检查它是否是一个。

var page = HttpContext.Current.CurrentHandler as Page;

if(page != null){
    // Do something with page
}

答案 1 :(得分:7)

您可以使用HttpContext.CurrentHandler返回请求的当前HttpHandler。 Page类只是一种复杂类型的HttpHandler。

为了访问与页面属性相关的任何内容,您需要将结果强制转换为Page类型。

老实说,如果可能的话,我会采用Jeff的方法,因为通过在方法调用中注入页面引用,您的方法更加可测试(更不用说可靠,因为您可以直接使用Page)。依赖与HttpContext有关的任何事情往往会使你的代码不可测试。也许你处在一种你无法设计这种方法的情况,但这是我喜欢的方式。

答案 2 :(得分:3)

最简单的方法是将当前页面作为参数传递给您在静态类中调用的方法。