在我的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
}
谢谢!
答案 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;
}
由于页面已经保存状态,标签将回发到服务器,并从视图状态恢复当前值。您只需提取值,然后使用您的修改设置值。试试吧,它应该工作。
您的解决方案实际上是过于复杂的事情。