按钮未获取ViewState值,并且未显示任何错误消息

时间:2017-01-25 14:57:44

标签: c# asp.net

我一直在尝试使用ViewState对象存储计数器以单击ImageButton.For实例如果单击ImageButton1它将存储计数器== 1(或增量),如果单击另一个按钮,计数器将变为null。我试过点击图像按钮,计数器变为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 个答案:

答案 0 :(得分: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)
     {