不允许重新提交页面

时间:2011-04-09 21:05:37

标签: c# asp.net webforms postback submit

我有一个ASP.NET 4.0 Web表单。我希望用户提交并检查一个文本框。如果它是 更正,我删除了文本框,不希望用户能够重新提交该数据。在IE8中,用户可以回击(获得重新提交警告),如果他们刷新,则会重新提交该文本框中的数据。

我已尝试将值设置为null并禁用文本框的viewstate。

如何停止重新提交?

5 个答案:

答案 0 :(得分:2)

您可以按照Wikipedia中的详细说明实现Post Redirect Get模式,以删除刷新和双重回发。

答案 1 :(得分:2)

如果提交永远不会被处理两次绝对至关重要,请结合以上所有内容。

  1. 按照安德烈的评论
  2. ,在提交按钮上放置一些onclick javascript以禁用或隐藏它
  3. 根据Daz Lewis的链接实施发布/重定向/获取,以确保浏览器上的刷新不会重新提交表单
  4. 最后,根据Matt Greer和Alison的建议添加一个隐藏字段,会话变量等,所以如果有什么东西可以通过 - 例如连接在帖子和重定向之间超时,用户在浏览器上点击刷新 - 你不会在后端对其进行双重处理。

答案 2 :(得分:1)

我不认为关于“后退”按钮,您可以选择,但要再次检查表单上的值,并确定是否是重新提交的表单。 您还有另外一个选择,即在提交后重定向到名为test.aspx的中间页面,该页面重定向到您的目标页面,因此在这种情况下,后退按钮将无效。

答案 3 :(得分:1)

您可以使用AJAX从文本框发布数据,这样更好,因为您没有“后退”按钮。

对于小东西(一个字段,小信息)我使用这个:

$.post("savedata.aspx", { name: "John", time: "2pm" } );

看看others examples,它可能会有用。

请记住在项目中引用jQuery

答案 4 :(得分:1)

提交后,您可以保存表单已在会话变量中提交的事实。提交表单时,首先测试此变量。如果变量为真(或者你设置的那个),那么什么都不做。用户可以刷新,不会重新提交任何内容。