ASP.NET C#:按下按钮时的标签计数

时间:2017-05-16 10:54:25

标签: c# asp.net int label buttonclick

这可能是一个愚蠢的愚蠢问题,但为什么这不会超过2?

无论我点击多少次按钮,标签都会卡在2上。

protected void nextBtn_Click(object sender, EventArgs e)
    {
            questions = 1;
            questions++;
            qstnLbl.Text = questions.ToString();
    }

标签应该从1开始,按下按钮添加2-3-4等数字。我错过了什么?

3 个答案:

答案 0 :(得分:1)

网络是无国籍的。 questions在每次回发时初始化为1,因此值始终为2;

请使用session更改代码,如下所示:

protected void nextBtn_Click(object sender, EventArgs e)
{
    questions = 1;
    if (Session["questions"] != null)
       questions = (int)Session["questions"];
    questions++;
    Session["questions"] = questions;
    qstnLbl.Text = questions.ToString();
}

在Web中维护状态的方法有很多种。请仔细阅读link以获取更多相关信息。

答案 1 :(得分:0)

即使在控制台或桌面应用程序中,这也行不通,因为每次点击都会将您的值重新初始化为1。

如其他答案所述,HTTP也是无状态的。

答案 2 :(得分:0)

增量值的方法是正确的,但它总是2,因为您在按钮点击时声明并为值变量1赋值。因此,当您单击按钮时,您将获得一个问号变量保持1,该变量将增加到2,并将显示在标签中。

所以,要解决这个问题,你必须使用能够永久保存你的问题变量的东西,除非你破坏那个东西。因此,您可以使用ViewState,Session或Cookie。

使用会话。

protected void nextBtn_Click(object sender, EventArgs e)
{
    int questions = Session["questions"] ==null? 1:
       Convert.ToInt32(Session["questions"]);        
    questions++;
    Session["questions"] = questions;
    qstnLbl.Text = questions.ToString();
}

同样,您可以使用ViewState或Cookie代替会话。