为每个页面刷新插入新行

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

为什么会这样?

谢谢

单击该按钮时,它会向服务器发送POST请求,并将更新的页面作为响应发回。 为了刷新该页面,必须再次进行相同的POST,并且服务器将其解释为另一个按钮单击。

大多数Web浏览器都会在这种情况下发出警告,说刷新页面可能会重复刚执行的任何操作(在您的情况下,在数据库中插入一行)。 但是如果你想要防止这种情况发生,最好的方法可能是通过重定向来响应POST请求。 在使用C#的ASP.NET中,执行此操作的方法是:

Response.Redirect(url); 

重定向回到同一页面很好,或者您也可以重定向到不同的页面。 当浏览器收到此重定向时,它将发出指定页面的GET请求。 然后,如果您刷新,则不会采取任何措施。

您需要处理页面刷新事件处理程序并检查。

只是因为刷新导致了另一个重新进行插入操作的回发。

您可能希望执行重定向到同一页面以防止这种情况发生。 还有一些其他方法可以解决这个问题。

之所以发生这种情况,是因为您使用与第一次请求相同的POST参数再次请求页面。

要解决此问题:要么检查代码中的页面刷新,要么不在该事件中执行插入,要么第一次设置cookie,然后如果cookie存在则不再进行插入。 Cookie可以具有固定的持续时间(比如说30分钟),也可以是会话cookie,这将持续到用户关闭浏览器。