按钮未获取ViewState值,并且未显示任何错误消息(Button is not getting the ViewState Value and no error message shown)

我一直在尝试使用ViewState对象存储计数器以单击ImageButton。例如,如果单击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"; } }

i have been trying to use the ViewState object to store the counter for clicking the ImageButton.For instance if ImageButton1 is click it will store the counter == 1(or increment) in it if another button is clicked the counter will become null.I tried clicking the imagebutton , the counter becomes 1 however when i try to retrieve from the submit button via the if else statement it retrieves nothing and the button cannot work.In addition no error message has been shown.I am developing something like a seat selector for my project.Any help will be greatly appreciated!.Below are the codes

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

最满意答案

您正在递增值以及设置局部变量,但请注意,您永远不会将值存储回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; }

另外,不要使用类变量,因为它会在每次新请求后重新初始化,在Submit Button处理程序中使用局部变量,如下所示: -

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

You are incrementing the value as well as setting a local variable but please note you are never storing the value back in ViewState object.

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

Also, don't use class variable as it will be re-initialized after every new request, use local variable instead like this in Submit Button handler:-

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

更多推荐