[英]Button click event doesn't work properly
下面的代码处理按钮单击事件。 用户第一次单击时,将标签设置为“第一次”,而用户第二次单击时,将标签设置为“第二时间”。 但是它不能正常工作。 当我第一次单击它时,它会将标签设置为“第一次”,这是正确的,但是当我第二次单击时,什么也没有发生。
我的代码:
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--;
}
}
我该如何解决?
实例字段(如counter
的值不会在回发之间保存。 您需要将counter
存储在ViewState
, Session
或其他持久存储中,以较合适的一个为准。 例如:
private int Counter
{
get { return ((int?)this.ViewState["Counter"]).GetValueOrDefault(); }
set { this.ViewState["Counter"] = value; }
}
然后参考this.Counter
代替counter
在btnCompTagUpdate_Click
。
如果完全按照您列出的方式初始化“ 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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.