【问题标题】:Access current instance of Page from a static class从静态类访问 Page 的当前实例
【发布时间】:2010-03-22 19:46:04
【问题描述】:

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

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

【问题讨论】:

标签: asp.net static


【解决方案1】:

从技术上讲,您可以为请求获取当前的IHttpHandler。既然Page 实现了它,那么你可以检查它是否是一个。

var page = HttpContext.Current.CurrentHandler as Page;

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 同意,我强烈怀疑 httpcontext 在线程方面也是一团糟。
    【解决方案3】:

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

    【讨论】:

    • 呸! HttpContext.Current 就是这样,除非你有机会重构。
    猜你喜欢
    • 1970-01-01
    • 2020-02-02
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2016-02-25
    • 2012-07-02
    相关资源
    最近更新 更多