[英]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.