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

时间:2013-07-22 11:21:19

标签: c#

我已将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");
}

4 个答案:

答案 0 :(得分:2)

假设你只是想检查一个非设置的会话变量,如果是这样,将其设置为零,那么你可以这样做:

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

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

答案 1 :(得分:1)

使用

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

您的按钮是服务器端,因此您的页面将回发,因此您不需要使用response.redirect(“同一页面”);

答案 2 :(得分:0)

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

'set initial value

if session("counter") is nothing then
 session("counter") = 0
end if

如果您要回发,也可以使用上述内容,或者您​​可以:

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

答案 3 :(得分:0)

您可以将初始化移至其他页面。而不是从应用程序的另一部分直接跳转到“同一页面”,而是转而使用“初始化程序”。 页面初始化您的会话变量并立即重定向到您的“同一页面”。

您的“Button_Click”仍会重定向到“同一页面”,绕过该初始化。