为每个页面刷新插入新行

时间:2009-12-31 05:42:15

标签: c# asp.net

您好,我在将记录插入数据库时​​遇到了一个奇怪的问题。 在我的按钮单击事件中,我正在尝试将一些值插入到我的数据库中,它正常工作。插入完成后......再次按下F5或刷新浏览器,新行将插入表格中的先前值。

为什么会这样?

谢谢

5 个答案:

答案 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)