ASP.NET C#:按按钮时的标签计数
这可能是一个愚蠢的问题,但为什么这不是增加超过2 无论我点击按钮多少次,标签都会贴在2上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等。我是否遗漏了什
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中维护状态是一项挑战。正如我在回答中所说的,您还可以尝试链接中提到的其他方法来维护状态。也请接受答案,以便其他人清楚。