2010-09-21 81 views
6

我正在开发ASP.NET应用程序,并且遇到与重新提交行为有关的“问题”。 我正在使用表单提交事件中的计数器来控制重新提交,如果提交已经发布,则会禁用提交。 我的申请是一个3步骤的工作流程,当第3步显示交易从第2步延续到第3步。 我的问题是什么?那么...我想避免用户通过按F5或其他所有可能性重新提交数据。我不想禁用该密钥,因为可能是解决方法。 我想知道如果我可以删除在呈现完成之后运行的HTTP模块中的发布数据,并且恰好在将响应发送给用户之前。避免窗体重新提交

回答

5

您可以使用Post/Redirect /获取“模式”,当用户发布数据时,将其重定向到另一个将响应获取的页面(处理提交的数据之后)。就像stackoverflow和其他网站正在做的一样。

以下是解释Post/Redirect/Get Pattern的维基百科页面。

+1

是的,如果你在POST之后做了重定向,那么客户端被重定向到一个GET页面,所以如果它们刷新了,它只会刷新GET。 – 2010-09-21 16:48:46

+1

链接已损坏,该页面没有Google缓存或waybackmachine。 – daniloquio 2012-03-12 16:23:06

2

也许我误解了你的问题,但听起来你可能会让事情变得比他们更难。如果您已经跟踪过表单是否已经提交过,为什么不能在执行提交时执行的任何逻辑之前在代码中检查该标记?如果之前已经提交过,则忽略重新提交事件并可能设置错误消息。