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