gpt4 book ai didi

c# - 当我按 F5 时 btnAdd_Click 触发

转载 作者:行者123 更新时间:2023-11-30 22:49:26 24 4
gpt4 key购买 nike

您好,我有一个简单的代码可以在按钮单击事件中将数据插入数据库。它执行正常并将数据插入数据库。插入数据后,如果我按 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com