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

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

我的代码:

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--; } } 

我该如何解决?

像回复这样的实例字段的值不会在回发中保存。 您需要在ViewStateSession或其他一些持久存储中存储counter ,以更合适的方式。 例如:

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

然后在btnCompTagUpdate_Click引用this.Counter而不是counter

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

 void Page_Load(object sender, EventArgs e) { if (!IsPostBack) Session["counter"]=0; } 

首次加载页面时,您可以立即设置计数器值。

 protected void btnCompTagUpdate_Click(object sender, EventArgs e) { int counter=0; if (Session["counter"]!=null) counter= Convert.ToInt32(Session["counter"]); if (counter == 0) { lable1.Text="First Time"; counter++; Session["counter"]=counter; } else if (counter == 1) { lable1.Text="Second Time"; counter--; Session["counter"]=counter; } } 

您只需要更改方法中增加计数器的方式。 单击按钮后,您不会将其保存为新变量。

 int counter = 0; protected void btnCompTagUpdate_Click(object sender, EventArgs e) { if (counter == 0) { counter = counter + 1; label1.Text="First Time"; } else if (counter == 1) { counter = counter - 1; label1.Text="Second Time"; } }