AJAX,回发和浏览器刷新

时间:2020-03-06 15:05:09  来源:igfitidea点击:

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

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

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

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

解决方案

我已经有好几年没有使用ASP.NET了,但是我们应该在" Page.IsPostBack"中包装"在回发时执行此操作"代码:

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

MSDN链接

我们可以尝试使用发布/重定向/获取模式。基本上,不是让回发发送数据,而是重定向到页面。这样,如果用户刷新,则他/他正在刷新GET命令而不是POST。
对不起..错过了UpdatePanel的一块。确保提交按钮也位于该UpdatePanel中。页面刷新不会影响AJAX调用,但是当按钮位于面板外部时,它将进行定期回发,因此我们将再次发送添加请求。