【发布时间】:2012-04-01 17:38:02
【问题描述】:
我有一个表格来编辑员工信息。如果用户希望为所选员工输入新的电子邮件地址,则会出现一个文本框和一个显示“添加电子邮件地址”的按钮。很简单,你输入邮箱地址,点击Add Email Address。它回发并且该按钮的事件处理程序执行对数据库的 INSERT。
问题: 如果在回发后按 F5 刷新页面,即使文本框为空白,也会导致发生相同的回发。换句话说,每次您按下 F5 时,事件处理程序中的添加电子邮件地址按钮的操作都会再次发生。如果我按 F5 十次,相同的电子邮件地址会在数据库中显示十次。
我发现的一个建议是“在应用更改后重新定向到同一页面”。这在我们的例子中并不理想的原因是它是一种相当冗长的员工数据形式 --- 如果用户对整个表单进行大量更改(例如 FirstName、LastName 等),然后进行 e-在将更改应用到其他地方之前添加邮件,如果我们重定向到同一页面,其他地方的更改将会丢失。
我能想到的非常冗长的解决方案是,捕获 ViewState 中的所有数据,将其携带到重定向到同一页面,然后在 URL 中使用查询字符串来确定是否要填写来自 ViewState 的数据。在我踏上这条路之前,我希望有一些我只是不知道的方法,而不是像 PostbackButDontRetainPostbackData() (一厢情愿,我知道)。
【问题讨论】:
标签: c# asp.net refresh postback page-refresh