更新按钮上的计数器
本文关键字:计数器 按钮 更新 | 更新日期: 2023-09-27 18:25:19
当我运行下面的代码时,它不会多次更新变量_counter。无论我按了多少次按钮,打印的值总是"1"。每次按下btnOK时,我如何更新它?
public partial class test2 : System.Web.UI.Page
{
protected int _counter;
public test2()
{
_counter = 0;
}
protected void Page_Load(object sender, EventArgs e)
{
Session["cnt"] = 0;
}
protected void btnOK_Click(object sender, EventArgs e)
{
_counter = (int)Session["cnt"];
_counter++;
Session["cnt"] = _counter;
lblInfo.Text = _counter.ToString();
}
}
这是ASP.NET
中为什么需要状态管理的经典情况/场景。
asp.net是无状态的,因为它运行在http协议上,http协议本身不维护任何状态,所以每次按下按钮都会生成一个新的http post请求->您的_counter
初始化为0->递增为1并相应显示。
请考虑使用任何状态管理机制来解决此问题。你可以像一样使用Session
来避免这种情况
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
Session["cnt"] = 0;
else
DoIncrement();
}
protected void DoIncrement()
{
if(Session["cnt"] != null)
{
int _counter = (int)Session["cnt"];
_counter++;
Session["cnt"] = _counter;
lblInfo.Text = _counter.ToString();
}
}