代码之家  ›  专栏  ›  技术社区  ›  tsimon

是否从HttpContext获取当前System.Web.UI.Page?

  •  83
  • tsimon  · 技术社区  · 18 年前

    第二个问题,可能与第一个问题有关,是为什么我不能使用以下内容来查看当前页面是否实现了接口:

    private IWebBase FindWebBase()
    {
        if (HttpContext.Current as IWebBase != null)
        {
            return (IWebBase)HttpContext.Current.;
        }
        throw new NotImplementedException("Crawling for IWebBase not implemented yet");
    }
    

    一般情况下,一些控件需要知道它们是作为SharePoint Web部件执行,还是作为Asp.Net框架的一部分执行。

    编译器错误为:

    4 回复  |  直到 14 年前
        1
  •  143
  •   Ash    16 年前

    否,来自HttpContext.Current上的MSDN:“获取或设置当前HTTP请求的HttpContext对象。”

    您可以使用以下方法通过HttpContext访问页面对象:

    Page page = HttpContext.Current.Handler as Page;
    
    if (page != null)
    {
         // Use page instance.
    }
    
        2
  •  37
  •   alony    14 年前

    HttpContext.Handler . 由于页面实现了IHttpHandler,您将获得对当前正在执行的页面的引用。您必须将其强制转换,或者至少尝试将其强制转换为您要查找的特定类型。

    HttpContext.Current 只返回HttpContext的单例实例。因此,它不是也永远不可能是一页。

        3
  •  15
  •   user452427    14 年前

    您可能想使用 HttpContext.Current.CurrentHandler Response.Transfer 到您的自定义ErrorHandler.aspx页面。 CurrentHandler HttpContext.Current.Handler 将返回Default.aspx的实例。

        4
  •  0
  •   Community Mohan Dere    9 年前

    请看我的回答:
    Why HttpContext.Current.Handler is null?

    也许解决了你的问题。