为每个页面刷新插入新行
嗨,我在将记录插入数据库时遇到了一个奇怪的问题。 在我的按钮单击事件中,我正在尝试将一些值插入到我的数据库中,它正常工作。 插入完成后……再次按下F5或刷新浏览器时,新行将插入表中的先前值。
为什么会这样?
谢谢
单击该按钮时,它会向服务器发送POST请求,并将更新的页面作为响应发回。 为了刷新该页面,必须再次进行相同的POST,并且服务器将其解释为另一个按钮单击。
大多数Web浏览器都会在这种情况下发出警告,说刷新页面可能会重复刚执行的任何操作(在您的情况下,在数据库中插入一行)。 但是如果你想要防止这种情况发生,最好的方法可能是通过重定向来响应POST请求。 在使用C#的ASP.NET中,执行此操作的方法是:
Response.Redirect(url);
重定向回到同一页面很好,或者您也可以重定向到不同的页面。 当浏览器收到此重定向时,它将发出指定页面的GET请求。 然后,如果您刷新,则不会采取任何措施。
您需要处理页面刷新事件处理程序并检查。
只是因为刷新导致了另一个重新进行插入操作的回发。
您可能希望执行重定向到同一页面以防止这种情况发生。 还有一些其他方法可以解决这个问题。
之所以发生这种情况,是因为您使用与第一次请求相同的POST参数再次请求页面。
要解决此问题:要么检查代码中的页面刷新,要么不在该事件中执行插入,要么第一次设置cookie,然后如果cookie存在则不再进行插入。 Cookie可以具有固定的持续时间(比如说30分钟),也可以是会话cookie,这将持续到用户关闭浏览器。
- 无法将类型’double’隐式转换为’float’
- 带有entity framework的ASP .NET MVC 5中的并发性
- Entity Framwork 7.0.0-rc1-final现有数据库“数据库优先”的逆向工程师
- 尝试以编程方式删除文件夹时“目录不为空”错误
- ASP.NET中嵌套的SqlDataReader“已经是一个开放的DataReader”exception
- WCF Windows身份validation安全性错误
- Visual Studio 2013“中断处理的exception”不起作用,而不是破坏
- 如何减少Recaptcha难度?
- 如何在ASP.NET中单击链接按钮时在Bootstrap Modal中显示数据