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

Session State not saving value until third attempt

我目前正在尝试学习如何使用会话状态,但我 运行 遇到了一个我无法弄清楚的问题。我想要做的是有一个按钮,当我点击它时,它会将我的变量的值增加 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++;
}

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

Page_Load 事件之后才会触发 btnCounter 单击事件。如果您在 Click 事件中更新 Label,您可能会获得更好的结果。

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

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