我在。CS 文件里 初始化一个全局的类 (这个类的构造函数需要一个参数,该参数就是用户的ID)
如下:
private Confine c = new Confine(Convert.ToInt32(Session["Login_UserID"]))但是系统报错!错误 非静态的字段、方法或属性“System.Web.UI.Page.Session.get”要求对象引用如果 我把类的初始化定义在Page_Load里就没问题 一起都正常请问这是为什么???我每个页面有很多地方用这个类里的属性 所以我不可能每用一个属性都NEW一次 请问怎么办?

解决方案 »

  1.   

    try
    定义在外面 实例化在 Page_Load内如
    private XX x;
    Page_Load
    {
     x = new XX();
    }
      

  2.   

    说白了 还是要多写一句 NEW但是 我不想这么做 还有其他的办法吗?
      

  3.   

    楼主的问题一定要在Page_Load里面写。
      

  4.   

    全局的类也就是静态的了,静态和类是和Session没有关系的。这时,由于没有浏览器,所以Session肯定不能访问。所以,要在PageLoad事件中写。
    其实,你可以自己写一个Page基类,来完成这个工作 public class PageBase : System.Web.UI.Page
    {
    protected Confine c = null;
         public override PageLoad()
         {
             c = new Confine(Convert.ToInt32(Session["Login_UserID"]))     }
    }
      

  5.   

    如果要在CS中写,要用上下文对象,也就是这样写
    private Confine c = new Confine(Convert.ToInt32(HttpContext.Current.Session["Login_UserID"]));
      

  6.   

    如果要在CS中写,要用上下文对象,也就是这样写
    private Confine c = new Confine(Convert.ToInt32(System.Web.HttpContext.Current.Session["Login_UserID"]));