页面刷新和计数器值
本文关键字:计数器 刷新 | 更新日期: 2023-09-27 18:21:13
我有一个网页,在页面加载时,它会将计数器初始化为0。每次回发时,保存在会话中的计数器都会递增1,直到达到值4。基本上,这背后的想法是,用户有4次机会输入用户名和屏幕上显示的CAPTCHA图像。如果用户失败4次(因此使用计数器),他将被重定向到错误页面。
这是我页面加载中的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Label_Error.Visible = false;
Session["Count"] = 0;
}
else
{
if (Session["Count"] == null)
{
Session.Abandon();
Response.Redirect("CheckOutErrorPage.htm");
}
else
{
int count = (int)Session["Count"];
count++;
Session["Count"] = count;
}
}
}
单击按钮时,计数==4的检查正在进行。现在代码运行良好。如果用户点击按钮4次,他将不再被允许。如果用户点击刷新按钮,唯一的问题就会出现。事实上,一旦用户点击刷新,计数器就会设置为0,并且他还有4次尝试。我该如何阻止这种情况的发生?我不希望在刷新页面时将计数器设置为0。我希望计数器的值保持原样。请问我该怎么做?
根本问题在于这个细分市场:
if (!this.IsPostBack)
{
Label_Error.Visible = false;
Session["Count"] = 0;
}
如果你先检查会话变量是否存在,而不是自动覆盖值,这可能会解决你的问题:
if (!this.IsPostBack)
{
Label_Error.Visible = false;
Session["Count"] = Session["Count"] ?? 0;
}
当然,这确实假设用户没有清除他们的cookie并开始新的会话。