会话状态直到第三次尝试才保存值

时间:2016-01-11 15:57:11

标签: c# asp.net session-state

我目前正在尝试学习如何使用会话状态,但我遇到了一个我无法弄清楚的问题。我想要做的是有一个按钮,当我点击它,它会将我的变量的值增加1,但我的问题是,我点击它的前三次我的int不增加,但在第四次点击它按预期工作并增加。

这是我的代码。

private static int Clicks = 1;

protected void Page_Load(object sender, EventArgs e)
{
    // First page load?
    if (!IsPostBack)
    {
        Session["Clicks"] = Clicks; //Clicks
    }

    Label1.Text = Convert.ToString(Session["Clicks"]);
}

protected void btnCounter_Click(object sender, EventArgs e)
{
    //UserClick.BtnClicks++;
    Session["Clicks"] = Clicks++;
}

2 个答案:

答案 0 :(得分:2)

您应该查看ASP.NET Page Lifecycle(请参阅回发事件处理)。

btnCounter点击事件在Page_Load事件发生后才会被触发。如果您更新Label活动中的Click,则可能会获得更好的结果。

protected void btnCounter_Click(object sender, EventArgs e)
{
    Session["Clicks"] = Clicks++;
    Label1.Text = Session["Clicks"].ToString();
}

答案 1 :(得分:0)

另外,由于您很难将该变量设置为' 1',每次单击该按钮时,它都将重置为1.您可能希望将其替换为getter和setter,以检查会话变量是否存在如果是,则将值设置为该值。