日期:2014-05-18  浏览次数:20499 次

非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用??

public   partial   class   Add3   :   System.Web.UI.Page
{
        public   DataRow   drw;
        public   String   Temp   =   Request.Params[ "iCustomerId "];
        ...........................................
        .........................................
        错误指示public   String   Temp   =   Request.Params[ "iCustomerId "];有问题
        在page_load()中声明String   Temp   =   Request.Params[ "iCustomerId "];就没问题


------解决方案--------------------
public String Temp;
放在page_Load等里

Temp = Request.Params[ "iCustomerId "];
------解决方案--------------------
Temp 是页面类的成员变量,现在初始化该成员变量发生错误了,你必须知道初始化该成员变量就代表现在你这个页面类还没有实例化,然后一个未实例化的变量又去调用System.Web.UI.Page.Request.Params属性(该属性又去调用一个其它类的静态方法!!),可能吗?
必须明白几点
1.静态方法由类名调用,不管该类实例化了多少次,该类的静态方法就只有一份,被该类所有实例共享,都可要调用它噢,就好像你公司的办公室有好几间,但共享走廊里面一个厕所
2.静态方法只能调用静态变量,静态方法,静态..等
3.成员方法任意调用静态方法或者静态变量,静态..等,但是成员变量的初始化却不能调用静态属性等,因为初始化成员变量就代表所在类还没有实例化,又如何去调用静态的东西??

4.由上面的第3条又可以多出最重要的一条规则:对象实例化后才能调用静态的东西

--------The End 祝愉快-------

------解决方案--------------------
可能你会说在类里面成员变量初始化时不能调用静态的东西,那该类里面的方法为什么可以呢?因为类的方法是没有初始化的概念的,类的属性也没有,
所以你上面的东西要改改,用

public String Temp {
get{return Request.Params[ "iCustomerId "];}
}
绝对可以的!!

再重复一次:静态的东西只能由实例去调用,因此初始化过程是无法调用静态的
------解决方案--------------------
u can using the following codes ->

public String Temp = HttpContext.Current.Request.Params[ "iCustomerId "];

but, it 's a bad style.