【问题标题】:AJAX, postbacks and browser refreshesAJAX、回发和浏览器刷新
【发布时间】:2008-10-03 16:43:20
【问题描述】:

我创建了一个用户控件来处理向某些业务实体(如联系人和客户)添加 cmets。效果很好......除了一个问题。

我正在使用一个 ListView 控件来编辑和删除 cmets,并在一个单独的区域中,在同一个用户控件上添加新评论。所有这些都包含在 UpdatePanel 中。

这是我的场景...用户添加新评论...页面进行回发,成功保存数据,更新 ListView 控件以显示新评论。现在,如果用户刷新浏览器,它自然会再次回发并添加另一条重复记录。

关于如何最好地防止这种情况的任何想法?

【问题讨论】:

  • 如何添加新评论?它是“添加评论”按钮事件处理程序的一部分吗?
  • 是的......这一切都有效......但如果用户按下浏览器上的刷新按钮,它将添加另一条记录。
  • 有一篇关于这个主题的好文章here

标签: asp.net ajax


【解决方案1】:

您可以尝试使用Post/Redirect/Get 模式。基本上不是让回发发送数据,而是重定向到页面。这样,如果用户刷新,他/她正在刷新 GET 命令而不是 POST。


抱歉.. 错过了 UpdatePanel 部分。确保您的提交按钮也在该更新面板中。页面刷新不会影响您的 AJAX 调用,但是当按钮位于面板外时,它会定期回发,因此您将再次发送添加请求。

【讨论】:

  • @Wayne 这不会破坏 AJAX 的全部目的吗?如果我进行重定向,整个页面不会刷新吗?
  • 这会破坏 AJAX 的使用
【解决方案2】:

我已经有几年没有使用过 ASP.NET,但您应该将“在回发时执行此操作”代码包装在 Page.IsPostBack 中:

if(IsPostBack) {
    //do your data-saving code...
}

MSDN link

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多