如何避免重定向到同一页面后重新初始化会话值

本文关键字:初始化 会话 重定向 何避免 一页 | 更新日期: 2023-09-27 18:24:17

我已经将page load方法中的一些会话变量初始化为零。然后我用button press方法对它们进行修改。我使用一个会话变量作为计数器,但当我将页面重定向到同一页面时,变量会再次初始化。请帮助我防止重新初始化我不想使用静态变量

场景是-

protected void Page_Load(object sender, EventArgs e)
{
    session["counter"] = 0;
}
protected void Button1_Click(object sender, EventArgs e)
{
    int count = (int)session["counter"];
    count++;
    session["counter"] = count;
    response.redirect("same page");
}

如何避免重定向到同一页面后重新初始化会话值

假设您只想检查一个未设置的会话变量,如果是,请将其设置为零,那么您可以执行以下操作:

protected void Page_Load(object sender, EventArgs e)
 {
      if(session["counter"] == null) {
          session["counter"] = 0;
      }
 }

根据具体情况,您还可以使用一系列客户端选项。

使用

 protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
    session["counter"]=0;
 }
 protected void Button1_Click(object sender, EventArgs e)
{
    int count=(int)session["counter"];
    count++;
    session["counter"]=count;
    //remove response.redirect("same page");
 }

你的buuton是服务器端的,所以你的页面会回发,所以你不需要使用response.redirect("same page");

如果您确实在重定向,而不是返回,只需在页面加载时检查您的初始变量是否已设置?如果没有,设置它。如果设置了,忽略设置。

'set initial value
if session("counter") is nothing then
 session("counter") = 0
end if

如果你正在回邮,你也可以使用上面的,或者你可以:

If not isPostBack then
 session("counter") = 0
end if

您可以将初始化移动到其他页面。不要直接从应用程序的另一部分跳到"同一页",而是julp到"初始值设定项"该页面初始化您的会话变量并立即重定向到"同一页面"。

您的"按钮点击"仍然重定向到"同一页",绕过初始化。