作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我有一个简单的代码可以在按钮单击事件中将数据插入数据库。它执行正常并将数据插入数据库。插入数据后,如果我按 f5 按钮,它会再次向数据库中插入一个具有相同值的新行。
按钮单击事件在每个 f5 按钮(刷新)上触发
问题是什么?
谢谢,纳古
最佳答案
这是设计好的。当您按 F5 键时,您正在重做您刚刚执行的回发操作。为了防止这种情况,您有无数种解决方案,例如:
在初始加载时使用 session 变量,并在第一次发布(保存)后清除该值。确保您正在检查此值是否存在。
// On inital page load for data entry store a key.
// This is a basic example, you should have a session wrapper
Session["Unsaved"] = 1;
// When you do the save logic make sure you check this session variable and save if
// it still exists.
if (Session["Unsaved"] != null)
{
// Save data here
Session.Remove("Unsaved");
}
else
{
// Show message that save has already completed or session has expired.
}
您还可以检查数据库端并验证您没有插入相同的数据(这可能不起作用,因为它在您的场景中可能有效)
在过去,我通过编辑来防止这种情况,例如通过存储修订号并让它提交修订号和发布的数据。保存时,如果修订号不匹配(因为它随着每次更新而更改并且检查是在数据库端完成的)那么更新失败并且我会显示一条消息。
对于新数据,您还可以执行 Response.Redirect 到“完整”页面,为他们提供成功/失败的更新信息。如果他们点击刷新,他们只会重新加载完成的页面,而不是正在执行插入/更新的页面。
同样有很多不同的解决方案。没有什么是适合所有情况的,因此您需要找出最适合您的情况。
关于c# - 当我按 F5 时 btnAdd_Click 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135404/
您好,我有一个简单的代码可以在按钮单击事件中将数据插入数据库。它执行正常并将数据插入数据库。插入数据后,如果我按 f5 按钮,它会再次向数据库中插入一个具有相同值的新行。 按钮单击事件在每个 f5 按
我是一名优秀的程序员,十分优秀!