本帖最后由 guyuekkk11 于 2012-08-26 16:30:19 编辑

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Label1.Text = "0";
            }
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            int i = Convert.ToInt32(Label1.Text);
            i++;
            Label1.Text = i.ToString();
        }
    很简单的一题 每次事件都会 先执行PAGELOAD事件在行事BUTTON事件
      

  2.   

    上面看错了。楼主写在了!postback中了原因可能是int i = Convert.ToInt32(Label1.Text);Label1.Text==null的话 convert转换会变成0所以还是1
      

  3.   

    可能我这个问题说的不是太明确,不过我已经知道答案了。原因是这样:在点击button按钮后,int i = Convert.ToInt32(Label1.Text);这个语句先执行,我们应该知道Label1.Text的值是通过ViewState传递给服务器的,禁用ViewState的话,在服务器端Label1是.不出来Text的,之所以这里可以.出来Text,说明Label1.Text不是从ViewState中取出来的,而是从服务器端的网页中取到的;之后执行i++;Label1.Text = i.ToString();就没有问题,虽然禁用了ViewState,但往网页中的Lable字段赋值是不受影响的。之后再点击button,显示的数值不变,是因为每次点击都是重复上面的这个过程,服务器并没有从ViewState读取任何值。ViewState的作用是把客户端的一部分信息提交给服务器端。