C# 不允许重新提交页面

C# 不允许重新提交页面,c#,asp.net,webforms,postback,submit,C#,Asp.net,Webforms,Postback,Submit,我有一个ASP.NET4.0Web表单。我希望用户提交并检查一个文本框。如果是 正确,我清空了文本框,不希望用户能够重新提交数据。在IE8中,用户可以回击(获得重新提交警告),如果他们刷新,它将从该文本框重新提交数据 我已尝试将该值设置为null并禁用文本框的viewstate 如何停止重新提交?我认为关于“后退”按钮,您没有任何选择,只能再次检查表单提交上的值,并确定它是否是重新提交的表单。 您还有一个选择,即提交后重定向到名为test.aspx的中间页面,该页面将重定向到您的目标页面,因此在

我有一个ASP.NET4.0Web表单。我希望用户提交并检查一个文本框。如果是 正确,我清空了文本框,不希望用户能够重新提交数据。在IE8中,用户可以回击(获得重新提交警告),如果他们刷新,它将从该文本框重新提交数据

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


如何停止重新提交?

我认为关于“后退”按钮,您没有任何选择,只能再次检查表单提交上的值,并确定它是否是重新提交的表单。
您还有一个选择,即提交后重定向到名为test.aspx的中间页面,该页面将重定向到您的目标页面,因此在这种情况下,“后退”按钮将不起作用。

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

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

$.post("savedata.aspx", { name: "John", time: "2pm" } );
看一看,它可能有用


请记住在项目中引用。

您可以实现本文详述的Post Redirect Get模式,以删除刷新和双重回发。

提交后,您可以保存表单已在会话变量中提交的事实。提交表单时,首先测试此变量。如果变量为true(或您设置的任何值),则不执行任何操作。用户可以刷新,并且不会重新提交任何内容。

如果绝对重要的是提交内容不会被处理两次,请将以上所有内容结合起来

  • 根据Andre的评论,在submit按钮上添加一些onclick javascript来禁用或隐藏它
  • 按照Daz Lewis的链接执行Post/Redirect/Get,以确保在浏览器上点击刷新不会重新提交表单
  • 最后,根据马特·格里尔和艾莉森的建议,添加一个隐藏字段、会话变量等,这样,如果确实有什么事情发生了——例如,post和重定向之间的连接超时,用户在浏览器上点击“刷新”,您就不会在后端对其进行双重处理

  • 你不能禁用按钮本身吗?或者,在最后一种情况下,作为一种不推荐的解决方法,您可以在first submit中添加视图状态,并检查是否无法停止重新提交,浏览器将执行浏览器将执行的操作。您可以检查提交的内容,如果是重复的,则忽略它。您可能需要呈现隐藏的GUID或类似的东西来检查重复的GUID?在任何情况下都应该这样做。在使用历史记录时重新提交警告是非常困难的。