Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET C#:按按钮时的标签计数_C#_Asp.net_Int_Label_Buttonclick - Fatal编程技术网

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

ASP.NET C#:按按钮时的标签计数,c#,asp.net,int,label,buttonclick,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等。我是否遗漏了什

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

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

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

标签应该从1开始,按按钮添加一个数字,如2-3-4等。我是否遗漏了什么?

Web是无状态的<代码>问题在每次回发时初始化为1,因此值始终为2

请将代码更改为如下,其中使用会话维护状态:

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中的状态。请仔细阅读此内容以获取更多信息。

即使在控制台或桌面应用程序中,这也不起作用,因为每次单击都会将值重新初始化为1


另外,正如其他答案所述,HTTP是无状态的。

您递增值的方式是正确的,但它始终是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来代替会话。

当然,会话又回来困扰我了,我仍然在学习这个ASP.NET,会话现在是一个巨大的痛苦。这非常有效,非常感谢!是的,在ASP.NET中维护状态是一项挑战。正如我在回答中所说的,您还可以尝试链接中提到的其他方法来维护状态。也请接受答案,以便其他人清楚。