为每个页面刷新插入新行
嗨,我在将记录插入数据库时遇到了一个奇怪的问题。 在我的按钮单击事件中,我正在尝试将一些值插入到我的数据库中,它正常工作。 插入完成后……再次按下F5或刷新浏览器时,新行将插入表中的先前值。
为什么会这样?
谢谢
单击该按钮时,它会向服务器发送POST请求,并将更新的页面作为响应发回。 为了刷新该页面,必须再次进行相同的POST,并且服务器将其解释为另一个按钮单击。
大多数Web浏览器都会在这种情况下发出警告,说刷新页面可能会重复刚执行的任何操作(在您的情况下,在数据库中插入一行)。 但是如果你想要防止这种情况发生,最好的方法可能是通过重定向来响应POST请求。 在使用C#的ASP.NET中,执行此操作的方法是:
Response.Redirect(url);
重定向回到同一页面很好,或者您也可以重定向到不同的页面。 当浏览器收到此重定向时,它将发出指定页面的GET请求。 然后,如果您刷新,则不会采取任何措施。
您需要处理页面刷新事件处理程序并检查。
只是因为刷新导致了另一个重新进行插入操作的回发。
您可能希望执行重定向到同一页面以防止这种情况发生。 还有一些其他方法可以解决这个问题。
之所以发生这种情况,是因为您使用与第一次请求相同的POST参数再次请求页面。
要解决此问题:要么检查代码中的页面刷新,要么不在该事件中执行插入,要么第一次设置cookie,然后如果cookie存在则不再进行插入。 Cookie可以具有固定的持续时间(比如说30分钟),也可以是会话cookie,这将持续到用户关闭浏览器。
在以下链接中检查解决方案
https://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_Refresh.4
上述就是C#学习教程:为每个页面刷新插入新行分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020731.html