按钮单击事件无法正常工作
以下代码处理按钮单击事件。 当用户第一次点击时,它将标签设置为“第一次”,当用户第二次点击时,它将标签设置为“第二次”。 但它不能正常工作。 当我第一次点击它时,它将标签设置为“第一次”,这是正确的,但是当我第二次点击时,没有任何事情发生。
我的代码:
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--; } }
我该如何解决?
像回复这样的实例字段的值不会在回发中保存。 您需要在ViewState
, Session
或其他一些持久存储中存储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"; } }