Событие нажатия кнопки не работает должным образом - PullRequest
1 голос
/ 14 февраля 2012

Этот следующий код обрабатывает событие нажатия кнопки.Когда пользователь щелкает первый раз, он устанавливает метку как «Первый раз», а когда пользователь нажимает второй раз, он устанавливает метку как «Второй раз».Но это не работает должным образом.Когда я впервые щелкаю по нему, он устанавливает метку «Первый раз», что правильно, но когда я нажимаю второй раз, ничего не происходит.

Мой код:

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

    }

Как можноЯ это исправлю?

Ответы [ 4 ]

8 голосов
/ 14 февраля 2012

Значения полей экземпляра, такие как counter, не сохраняются во всех обратных передачах. Вам нужно хранить counter в ViewState, Session или другом постоянном хранилище, в зависимости от того, что больше подходит. Например:

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

Тогда ссылка this.Counter вместо counter в btnCompTagUpdate_Click.

6 голосов
/ 14 февраля 2012

Если «Coutner» инициализируется именно так, как вы перечисляете, то это ваша проблема. Coutner повторно инициализируется в ноль после каждой обратной передачи. Вам нужно сохранить состояние Кутнера - я обычно рекомендую против него для любых, кроме самых простых случаев, но я думаю, что у вас есть действительный случай для использования ViewState .

1 голос
/ 14 февраля 2012
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;
  }

}
0 голосов
/ 14 февраля 2012

Вам нужно всего лишь изменить способ увеличения счетчика в методе. Вы не сохраняете его как новую переменную после нажатия кнопки.

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";   
 }     
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...