【问题标题】:Last Action Event get Fired on back Click最后一个动作事件在点击后被触发
【发布时间】:2013-08-24 16:11:29
【问题描述】:

我有一个表格,其中包含: 类别文本框 用于将 TextBox 值保存在数据库中的按钮。

代码运行良好,所有文本框值都在单击保存按钮时成功保存。

问题: 保存后我重定向到同一页面,现在当我点击某个链接时假设“Google.Com”,然后如果我点击后退按钮,浏览器会将我重定向到我的应用程序的上一页。 点击后退按钮发现回发值为真,然后再次触发保存按钮事件再次将文本框值保存在数据库中。

我不希望事件必须在返回点击时触发。 我该怎么办?

请帮助我,我遇到了问题,但没有得到解决方案。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您需要做的是在您的应用中实现 Post/Redirect/Get (PRG) 模式。基本规则是您的 POST 不应返回页面(或视图);相反,它应该只返回一个重定向请求,该请求将获取要显示的页面/视图。

虽然您会发现更多关于 PRG 与 ASP.NET MVC 相关的信息,但我假设您使用的是 Web 表单 - 所以我所熟悉的示例并不多。

但这个概念非常简单。在 POST 之后,只需将 Response.Redirect 返回到您要显示的页面。这似乎是重复的工作,但您可以避免您所描述的问题。

希望这会有所帮助!

【讨论】:

  • 谢谢,您的解决方案解决了问题。但是我想表明数据保存后保存在同一页面上的 msg div 标签中,重定向后这是不可能的。
  • 一切皆有可能! :) 你有几个选择。您可以重定向并在 URL 上设置一个参数,该参数与您保存在数据库中的项目的 ID 相关联,以便您的 GET 将查询数据库以获取刚刚保存的数据、检索它并填充页面。或者,这取决于涉及的数据量和敏感度,但您可以创建一个包含 POST 中数据的 cookie,发出重定向,然后在 GET 中从 cookie 中检索数据。您还希望 GET 中的 cookie 过期。可能还有其他一些选择。
  • 你是对的,以上选项都可以,但对这种方法不满意。无论如何,谢谢你的支持。你的建议解决了我的问题。
猜你喜欢
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多