0

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

代码:

// 此代码上方有一个 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


}

谢谢 !!

4

1 回答 1

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

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

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

于 2012-04-16T17:28:48.520 回答