ASP.NET C#:按下按钮时的标签计数
ASP.NET C#: Label count on button press
这可能是一个愚蠢的愚蠢问题,但为什么这不会增加超过 2?
无论我点击多少次按钮,标签都卡在 2.
protected void nextBtn_Click(object sender, EventArgs e)
{
questions = 1;
questions++;
qstnLbl.Text = questions.ToString();
}
标签应该从 1 开始,然后在按下按钮时添加一个数字,例如 2-3-4 等。我是不是遗漏了什么?
Web 是无状态的。 questions
在每次回发时都初始化为 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 中维护状态的方法有很多种。请仔细阅读此 link 以获取更多相关信息。
即使在控制台或桌面应用程序中,这也行不通,因为每次点击都会将您的值重新初始化为 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 而不是会话。
这可能是一个愚蠢的愚蠢问题,但为什么这不会增加超过 2?
无论我点击多少次按钮,标签都卡在 2.
protected void nextBtn_Click(object sender, EventArgs e)
{
questions = 1;
questions++;
qstnLbl.Text = questions.ToString();
}
标签应该从 1 开始,然后在按下按钮时添加一个数字,例如 2-3-4 等。我是不是遗漏了什么?
Web 是无状态的。 questions
在每次回发时都初始化为 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 中维护状态的方法有很多种。请仔细阅读此 link 以获取更多相关信息。
即使在控制台或桌面应用程序中,这也行不通,因为每次点击都会将您的值重新初始化为 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 而不是会话。