您好,我在将记录插入数据库时遇到了一个奇怪的问题。 在我的按钮单击事件中,我正在尝试将一些值插入到我的数据库中,它正常工作。插入完成后......再次按下F5或刷新浏览器,新行将插入表格中的先前值。
为什么会这样?
谢谢
答案 0 :(得分:4)
当您单击该按钮时,它会向服务器发送POST请求,并将更新的页面作为响应发回。为了刷新该页面,必须再次进行相同的POST,并且服务器将其解释为另一个按钮单击。
大多数Web浏览器都会在这种情况下发出警告,说刷新页面可能会重复刚执行的任何操作(在您的情况下,在数据库中插入一行)。但是如果你想要防止这种情况发生,最好的方法可能是通过重定向来响应POST请求。在使用C#的ASP.NET中,执行此操作的方法是:
Response.Redirect(url);
重定向回同一页面很好,或者您也可以重定向到其他页面。当浏览器收到此重定向时,它将发出指定页面的GET请求。然后,如果你刷新,将不会采取任何行动。
答案 1 :(得分:0)
您需要处理页面刷新事件处理程序并检查。
答案 2 :(得分:0)
只是因为刷新导致了另一个重新进行插入操作的回发。
您可能希望执行重定向到同一页面以防止这种情况发生。还有一些其他方法可以解决这个问题。
答案 3 :(得分:0)
这种情况正在发生,因为您正在使用与第一次请求相同的POST参数再次请求页面。
要解决此问题:要么检查代码中的页面刷新,要么不在该事件中执行插入,要么第一次设置cookie,如果cookie存在则不要再次执行插入。 Cookie可以具有固定的持续时间(例如30分钟),也可以是会话cookie,这将持续到用户关闭浏览器。
答案 4 :(得分:0)