viewstate存值问题(http无状态)

前台代码:

1
2
3
4
        <!--http协议无状态,这个是可以控制点击,看后台呦-->
        <asp:Button ID="Button3" runat="server" Text="单击" onclick="Button3_Click"/>
        <br />
        <asp:Label ID="Label4" runat="server"></asp:Label>

后台代码:

1
2
3
4
5
6
7
8
        private int i = 0;
 
        //下面的方法不管单击几次按钮,都只有显示一次。(因为viewstate不能存值)
        protected void Button3_Click(object sender, EventArgs e)
        {
            i++;
           Label4.Text = i.ToString();
        

出现问题:

不管点击多少次按钮,只会显示一次

解决方案:

把值存在viewstate中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        protected void Page_Load(object sender, EventArgs e)
        {
             
            if (!IsPostBack){
                //一般完成初始化页面工作,第一次访问时是false。此后的属性都为true
                i = 0;//将变量的值存在viewstate中。可以避免发生值不能被保存的现象
                ViewState["i"] = i;//赋值给viewstate初始值
            }
            else 
                //开始回发请求
                //一般在这里开始完成对web应用程序的恢复和处理工作
                i = (int)ViewState["i"];//从viewstate里取值给i
            }
                 
        }
        private int i = 0;
        protected void Button3_Click(object sender, EventArgs e)
        {
            i++;
            ViewState["i"] = i;
            Label4.Text = "您单击了"+i.ToString()+"次";
        }
posted @ 2015-05-15 09:32  Yep.yep  阅读(199)  评论(0编辑  收藏  举报