int a;
    protected void Page_Load(object sender, EventArgs e)
    {
       //赋值
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        a=345; //赋值
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        //使用a的值
    }
如上,定义一全局变量,在pageload或者一个事件中给变量赋值,再另一个事件中使用变量的值,但此时取不到我相要的值345,其值已经是变量的默认初值,为0,这种情况下大家怎么处理?PS:如果用static变量,但多个用户访问此页面,则值共享,不是我想要的结果,这种方法排除
用session或viewstat等也可,但有无其它办法?

解决方案 »

  1.   

    static int a;
    解决!
      

  2.   

    QUOTE:如果用static变量,但多个用户访问此页面,则值共享,不是我想要的结果,这种方法排除 
    -------------
    天啊,有这事,偶马上试试。
      

  3.   

    <asp:hiddenfield id="HiddenField1" value="" runat="server"/>
        protected void Page_Load(object sender, EventArgs e)
        {
           HiddenField1.Value = "";
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            HiddenField1.Value=345; //赋值
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            //使用HiddenField1的值
        }
      

  4.   

    天啊,我以一直没有留意这个问题,看来static 解决不了,用viewstate吧
      

  5.   

    楼上的,有意思,看来我帮了你大忙了session全局的,存在服务端,有点大题小作,多了性能也不好
    viewstat和HiddenField1其实差不多,页面代码显臃肿,如果安全性要求高的话,也不适合
    其实属性也是个方法,但是页面级代码一般不怎么写这些(小项目)晚上泡csdn的人也不少呀,谢谢.
      

  6.   

    对于lz的问题我一般是用ViewState变量来解决.
    全局变量,如 protected string name = ""; 我一般用来为前台绑定后台的变量值,如在前台写:<%# name %> 
      

  7.   

    第一次运行时,编译器初始化该类,将值类型,更具体点是一个整形的值类型a初始化为0
    button2_click事件中,再次初始化,也为零。不允许使用session的话,就可以使用实例化成员,即变量是对应于对象的。class abc
    {public int a;}实例化abc时,构建的每个对象的a都是不一样的。
    个人觉得,使用属性更加符合OO。