我有一个表单来编辑员工信息。如果用户希望为选定的员工输入新的电子邮件地址,则会显示一个文本框和一个表示“添加电子邮件地址”的按钮。非常简单,您输入电子邮件地址,单击添加电子邮件地址。它回发并且该按钮的事件处理程序对数据库执行INSERT。回发后刷新导致再次发送相同的数据
问题: 如果按F5即回发后刷新页面,它会导致发生,即使文本框为空同回发。换句话说,每次你点击F5时,该添加电子邮件地址按钮的事件处理程序中的操作都会再次出现。如果我点击F5十次,那么同一个电子邮件地址会在数据库中显示十次。
我发现的一个建议是“在应用更改后重新指向同一页面”。这在我们的案例中不理想的原因是它是一种相当冗长的员工数据形式---如果用户对整个表格(如FirstName,LastName等)进行了一系列更改,在其他地方应用更改之前添加邮件,如果我们重新定向到同一页面,其他地方的更改将会丢失。
我能想到的非常漫长的解决方案是,捕获ViewState中的所有数据,通过重定向到同一页面,然后在URL中使用查询字符串来确定是否要填充来自ViewState的数据。在我走上这条路之前,我希望不是那样,而是有一些我不知道的方法,像PostbackButDontRetainPostbackData()(我知道一厢情愿的想法)。
我明白你的意思了,实际上我们会检查电子邮件地址是否存在。这仍然会导致每次刷新的消息框不相关。我想要的是页面刷新刷新页面没有以前的回发数据。 – CptSupermrkt 2012-03-16 06:30:22
@CptSupermrkt,你是指浏览器显示的消息框? – 2012-03-16 06:38:02
@CptSupermrkt,请参阅最新的答案。 – 2012-03-16 06:41:37