2009-12-31 28 views
1

嗨在将记录插入数据库时​​出现一个奇怪的问题。 在我的按钮单击事件我试图插入一些值到我的数据库它工作正常。一旦插入完成...再次如果我按F5或刷新浏览器一个新行正在插入表中以前的值。为每个页面插入新行刷新

为什么会发生?

谢谢

回答

4

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

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

Response.Redirect(url); 

重定向回到同一页是罚款,或者你也可以重定向到一个不同的页面。当浏览器收到此重定向时,它将为指定页面发出GET请求。然后,如果刷新,则不会采取任何行动。

0

你需要处理你的页面刷新事件处理和检查。

0

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

您可能想要执行重定向到同一页面以防止出现这种情况。还有其他一些手段来处理这个问题。

0

这是因为您再次请求该页面,使用与第一次请求相同的POST参数。

要解决该问题:请检查代码中的页面刷新,并且不要在该事件中执行插入操作,或者第一次设置cookie,然后如果cookie存在,则不要再次执行插入操作。该cookie可以具有固定的持续时间(例如30分钟),或者可以是会话cookie,其持续到用户关闭浏览器为止。