按钮单击事件无法正常工作

Sas*_*Sas 1 c# asp.net events visual-studio

以下代码处理按钮单击事件.当用户第一次点击时,它将标签设置为"第一次",当用户第二次点击时,它将标签设置为"第二次".但它不能正常工作.当我第一次点击它时,它将标签设置为"第一次",这是正确的,但是当我第二次点击时,没有任何事情发生.

我的代码:

int counter=0;    
protected void btnCompTagUpdate_Click(object sender, EventArgs e)
{

    if (counter == 0)
    {
        lable1.Text="First Time";
        counter++;
    }
    else if (counter == 1)
    {
        lable1.Text="Second Time";
        counter--;
    }

    }
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Mic*_*Liu 8

实例字段的值counter不会在回发中保存.您需要存储counterViewState,Session或其他持久性存储中,以更合适的方式存储.例如:

private int Counter
{
    get { return ((int?)this.ViewState["Counter"]).GetValueOrDefault(); }
    set { this.ViewState["Counter"] = value; }
}
Run Code Online (Sandbox Code Playgroud)

然后引用this.Counter而不是counterin btnCompTagUpdate_Click.


Ran*_*pho 6

如果"Coutner"完全按照您列出的方式进行初始化,那么那就是您的问题.每次回发后,Coutner都会重新初始化为零.你需要保存Coutner的状态 - 除了最简单的情况,我通常建议不要使用它,但我认为你有一个使用ViewState的有效案例.