避免使用 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
}
谢谢!!
如果您只是想增加计数器,您需要做的就是:
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;
}
由于页面已保存状态,因此标签将回发到服务器,并从视图状态还原其当前值。您只需拉取值,然后通过修改设置值。试试这个,它应该可以工作。
您的解决方案实际上使事情过于复杂。