Mat*_*hew 0 c# browser asp.net refresh
我有一个网页,在页面加载时,将计数器初始化为0.在每次回发时,保存在会话中的计数器递增1,直到达到值4.基本上,这背后的想法是用户有4次机会输入用户名并在屏幕上显示验证码图像.如果用户失败了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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
单击按钮时,将检查count == 4.现在代码工作正常.如果用户点击该按钮4次,则不再允许他.如果用户点击刷新按钮,则会出现唯一的问题.事实上,一旦用户点击刷新,计数器将被设置为0并且他还有4次尝试.我怎么能阻止这种情况发生?我不希望在页面刷新时将计数器设置为0.我希望计数器的值保持不变.我该怎么办?
问题从根本上讲是这个部分:
if (!this.IsPostBack)
{
Label_Error.Visible = false;
Session["Count"] = 0;
}
Run Code Online (Sandbox Code Playgroud)
如果您要先检查会话变量是否存在,而不是自动覆盖该值,这可能会解决您的问题:
if (!this.IsPostBack)
{
Label_Error.Visible = false;
Session["Count"] = Session["Count"] ?? 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,这确实假设用户没有清除他们的cookie并开始新的会话.
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |