每次单击按钮时增加编号

时间:2016-05-31 05:09:27

标签: c# asp.net increment

每当我点击按钮时,我想增加int变量i。但我获得的只是int的{​​{1}}值,并且它不会再增加。

这是我的代码:

1

4 个答案:

答案 0 :(得分:3)

通过每个请求(单击按钮),将创建一个新实例。 因此,您的非静态变量将重置为0

您可以将i定义为静态:

private static int i;
protected void btnStart_Click(object sender, EventArgs e)
{
    i++;

    lblStart.Text = i.ToString();
}

但请注意,i变量在所有用户之间共享。 要改善此问题,您可以使用Session

Session是一种在会话中存储每个用户数据的功能。

因此,您可以使用以下属性更改每个会话中的i变量:

private int i
{
    get
    {
        if (Session["i"] == null)
            return 0;

        return (int)Session["i"];

        // Instead of 3 lines in the above, you can use this one too as a short form.
        // return (int?) Session["i"] ?? 0;
    }
    set
    {
        Session["i"] = value;
    }
}

protected void btnStart_Click(object sender, EventArgs e)
{
    i++;

    lblStart.Text = i.ToString();
}

答案 1 :(得分:2)

如您所知其他答案是正确的我想添加另一个答案

您必须在 webform 中将变量保存在ViewState

只需像这样定义你的变量

public int i 
{
    get { Convert.ToInt32( ViewState["i"] ); }
    set { ViewState["i"] = value ; }
}

答案 2 :(得分:1)

每次将lblStart.Text值转换为int并将其分配给i。然后增加我。

private int i;
protected void btnStart_Click(object sender, EventArgs e)
 {
    i =   Int32.Parse(lblStart.Text);
    i++; 
    lblStart.Text = i.ToString();
 }

答案 3 :(得分:0)

您可以使用隐藏字段,将其初始化为0。

private int i;
protected void btnStart_Click(object sender, EventArgs e)
 {
    i =   int.Parse(myHiddenField.Value);
    i++; 
    myHiddenField.Value = i;
    lblStart.Text = i.ToString();
 }