Кнопка не получает значение ViewState и сообщение об ошибке не отображается

Я пытался использовать объект ViewState для хранения счетчика для щелчка по ImageButton. Например, если щелкнуть ImageButton1, он сохранит счетчик == 1(или приращение), если при нажатии другой кнопки счетчик станет нулевым.I при попытке щелкнуть кнопку изображения счетчик становится равным 1, однако, когда я пытаюсь извлечь из кнопки отправки с помощью оператора if else, он ничего не получает и кнопка не может работать. Кроме того, сообщения об ошибке не отображалось. Я разрабатываю что-то вроде селектора мест для моего проекта. Любая помощь будет принята с благодарностью!. Ниже приведены коды

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {


        if (ImageButton1.ImageUrl != "~/Images/bed-occupied.png")
        {
            ImageButton1.ImageUrl = "~/Images/bed-occupied.png";

            if (ViewState["Counter"] == null)
            {
                counterBed1 = 1;
                TextBoxClass.Text = counterBed1.ToString();
            }
            else
            {
                counterBed1 = (int)ViewState["Counter"] + 1;
            }

             }
        else
        {
            ImageButton1.ImageUrl = "~/Images/bed-unoccupied.png";
            ViewState["Counter"] = null;

        }

    }


 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        ViewState["Counter"] = counterBed1;
       // if(ViewState["Counter"] != null)
        if(counterBed1 ==1)
        {



            Panel_ErrorMsg.Visible = true;
            lb_ErrorMsg.Text = "Patient Successfully admitted to hospital";

        }




        }

1 ответ

Решение

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

int counterBed1 = 0;
if (ImageButton1.ImageUrl != "~/Images/bed-occupied.png")
 {
      ImageButton1.ImageUrl = "~/Images/bed-occupied.png";
      if (ViewState["Counter"] == null)
      {
          counterBed1 = 1;
          TextBoxClass.Text = counterBed1.ToString();
          ViewState["Counter"] = counterBed1; // Add This
       }
       else
       {
           counterBed1 = (int)ViewState["Counter"] + 1;
           ViewState["Counter"] = counterBed1; //Add This
       }
  }
  else
  {
      ImageButton1.ImageUrl = "~/Images/bed-unoccupied.png";
      ViewState["Counter"] = null;
  }

Кроме того, не используйте переменную класса, так как она будет повторно инициализироваться после каждого нового запроса, вместо этого используйте локальную переменную, как показано в обработчике кнопки "Отправить":

protected void btnSubmit_Click(object sender, EventArgs e)
 {
     int counterBed1 = Convert.ToInt32(ViewState["Counter"]);
     // if(ViewState["Counter"] != null)
     if(counterBed1 ==1)
     {
Другие вопросы по тегам