为什么HttpContext.Current需要在类中使用,而不是方法

时间:2011-02-12 03:04:24

标签: asp.net

例如,如果我在Page_Load方法中,并且我想获取查询字符串数据,我就这样做:

  public partial class Product_Detail : System.Web.UI.Page
  {    
        protected void Page_Load(object sender, EventArgs e)
        {
           string id = Request.QueryString["p"];
        }
   }

但如果我在课堂内,但不在我必须使用的任何方法中:

   public partial class Product_Detail : System.Web.UI.Page
   { 
     string id = HttpContext.Current.Request.QueryString["p"];
         protected void Page_Load(object sender, EventArgs e)
         {
         }
   }

为什么?

4 个答案:

答案 0 :(得分:1)

成员变量初始化程序 - 这是您的id赋值所在 - 不能使用实例方法或属性。 Page.Request是一个实例属性,因此不适用于成员初始化者。

答案 1 :(得分:1)

我猜想这是因为在课程即时之前不会创建类成员。因此,除了类方法之外,您无法访问Request属性。

答案 2 :(得分:1)

在构造函数之前,无法访问当前类的属性(包括 this )。由于字段初始化程序在执行构造函数之前发生,因此无法访问属性(和字段和方法)。

答案 3 :(得分:1)

您不能引用字段初始化程序的实例属性 - 当字段初始化时,实例尚未完全构造(即,没有 this 指针)。