ASP.NET
在public partial class workThings_useThings : System.Web.UI.Page下定义public int i=0;
在该页下一事件中i=100;读取i=100但到该页另一事件下读i=0
为什么啊?

解决方案 »

  1.   

    public partial class _Default : System.Web.UI.Page
    {
        public string i = "0";
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            i="100";
            Label1.Text = i;
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = i;
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            Label1.Text = i;
        }
    }
    点button时为100,后点两BUTTON时都为0。
    要怎么才能让他i值不变啊?
    qq群:19877329
      

  2.   

    我都是放到viewstate里,不知道还有没有更好的办法
      

  3.   

    ASP.NET跟WINFORM不一样,WEB是没有状态的,所以不会保存你公共变量的值,要保存公共变量就保存到session中或viewstate中
      

  4.   

    如果这个变量只在这个页面有用,建议用ViewState保存
    private int aa
        {
            get
            {
                object obj = ViewState["int_aa"];
                return (obj == null) ? 0: (int)obj;
            }
            set
            {
                ViewState["int_aa"] = value;
            }
        }如果其他页面也要用到的话就用Session,用法基本同上
      

  5.   

    你可以使用session, 但是不要不忘记捕捉错误,因为session有时候会是空值。
      

  6.   

    public partial class _Default : System.Web.UI.Page
    {
        public static string i = "0";   静态
        protected void Page_Load(object sender, EventArgs e)
        {
            i = 0;    //页面初始化时为0
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            i="100";
            Label1.Text = i;
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = i;
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            Label1.Text = i;
        }
    }