【问题标题】:ASP.NET How can I disable re-sending of request to server on refresh?ASP.NET 如何在刷新时禁用向服务器重新发送请求?
【发布时间】:2010-11-28 15:24:47
【问题描述】:

我正在开发一个页面,用户可以在其中登录并演示一些功能。我只想让用户每天演示一次。

一个小例子:

我有一个带有 3 个按钮的网页(涉及 3 个不同的场景)。在页面加载时,我查找数据库并检查当前登录的用户是否运行了 3 种可用场景中的任何一种(通过审计表)。根据结果​​启用/禁用每个按钮。如果启用了任何按钮,则它们尚未运行该演示。通过点击相关按钮,demo运行一条记录被写入Audit Table,并且该按钮被禁用。

这一切正常,但是,我意识到当我刷新页面(并确认我想重新提交信息)时,演示会再次运行。

我怎样才能阻止这种情况发生?我只需要允许用户运行一次演示!

谢谢。

【问题讨论】:

  • 只是想一想......是否就像在代码周围放置一个标志并在刷新之前设置它一样简单?
  • 如果用户开始观看演示,然后网络故障意味着他无法看到所有内容(例如,某些图像、脚本或样式表没有下载)?他/她是不是运气不好?
  • 不,它不是真正的高级演示,它会向客户发送短信/电子邮件。只是为了演示服务。

标签: asp.net refresh


【解决方案1】:

您不仅可以检查页面加载以启用/禁用按钮,还可以检查按钮事件,您可以验证该任务是否已执行

【讨论】:

    【解决方案2】:

    我建议您将表单提交更改为使用Post/Redirect/Get pattern,以避免在演示页面上点击刷新时重新提交。

    此外,您似乎应该能够在将记录写入审计表时更改代码,以检查记录是否已存在,如果存在,则返回不同的结果。不过,我会对这种方法保持警惕。浏览器的“刷新”功能通常不是您应该尝试阻止的。如果用户在演示过程中点击“刷新”会发生什么?

    【讨论】:

    • 演示没有什么特别之处,它只是向用户发送短信/电子邮件,因此它应该立即发生。我只是不希望用户不断刷新页面,基本上是通过短信和电子邮件向自己发送垃圾邮件!
    • 是的,那么肯定会使用 post/redirect/get 模式;)
    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2015-12-08
    相关资源
    最近更新 更多