1

我已将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

4 回答 4

2

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

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

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

于 2013-07-22T11:32:02.303 回答
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("same page");

于 2013-07-22T11:27:40.420 回答
0

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

'set initial value

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

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

If not isPostBack then
 session("counter") = 0
end if
于 2013-07-22T11:37:04.087 回答
0

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

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

于 2013-07-22T11:37:21.040 回答