避免使用 Response.Redirect 重置视图状态

本文关键字:视图状态 Redirect Response | 更新日期: 2023-09-27 18:31:29

在我的 Web 应用程序中,我有两个,一个 ViewState 和一个保存值的会话,问题是我需要重置一个并通过单击按钮保持另一个原样。如果我在按钮中使用Response.Redirect,则视图状态和会话都将重置。我尝试使用 if(!IsPostBack),但我认为这在按钮事件中不起作用。我非常感谢您的建议和帮助。

法典:

此代码上方有一个视图状态,我必须重置它

   protected void Button_Click(object sender, EventArgs e)
   {
       Session["Counter"] = (int)Session["Counter"] + 1; // I do not want to reset this Session.
       Label1.Text = Session["Counter"].ToString();
       Response.Redirect("Page1.aspx"); // If this button is pressed then Session["counter"] is resetted which I don't want to happen

}

谢谢!!

避免使用 Response.Redirect 重置视图状态

如果您只是想增加计数器,您需要做的就是:

 public override void OnLoad(EventArgs e)
 {
     if(!Page.IsPostBack)
     {
        if (Session["PersistedCounter"] == null)
            Session["PersistedCounter"] = "0";
        Label1.Text = Session["PersistedCounter"];
     }
 }
 protected void Button_Click(object sender, EventArgs e)
 {
     int oldValue = int.Parse(Label1.Text);
     Label1.Text = (oldValue + 1).ToString();
     Session["PersistedCounter"] = Label1.Text;
 }

由于页面已保存状态,因此标签将回发到服务器,并从视图状态还原其当前值。您只需拉取值,然后通过修改设置值。试试这个,它应该可以工作。

您的解决方案实际上使事情过于复杂。