Кнопка не получает значение 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)
{