避免使用Response.Redirect重置ViewStates

时间:2012-04-16 17:05:49

标签: c# asp.net

在我的Web应用程序中,我有两个,一个ViewState和一个包含值的Session,问题是我需要重置一个并通过单击一个按钮离开另一个。如果我在我的按钮中使用Response.Redirect,则会重置ViewState和Session。我尝试使用if(!IsPostBack),但我不认为这会在按钮事件中起作用。我非常感谢您的建议和帮助。

CODE:

//在此代码上方有一个ViewState,我必须重置

   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


}

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

由于页面已经保存状态,标签将回发到服务器,并从视图状态恢复当前值。您只需提取值,然后使用您的修改设置值。试试吧,它应该工作。

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