我怎么知道表格被提交两次?

时间:2009-09-29 11:40:08

标签: http post webforms

http协议中的内容可以帮助我查找,或者我应该自己查看字段。

如果可以多次提交相同的字段值,我应该添加虚拟隐藏字段吗?

6 个答案:

答案 0 :(得分:3)

如果您想完全确定您需要在表单的隐藏字段中包含表单的唯一ID,并在处理之前检查所有服务器线程可以查看的数据存储(例如数据库)表格数据。

答案 1 :(得分:0)

您可以这样做的一种方法是,点击后使用JavaScript禁用该按钮。此外,您可以创建一个服务器端代码来检查多个提交(或回发)。我不认为HTTP协议上有任何可用的东西,因为HTTP是无状态的,并且本身并不知道多个提交。

答案 2 :(得分:0)

我不认为它可能在http中。你可以计算字段的哈希值并在javascript中检查它。

修改,您可以将其存储在Cookie中

答案 3 :(得分:0)

避免这种情况的一种方法是在发生回发操作后重定向到同一页面。但这将清除存储在ViewState中的所有值。

这是一篇关于这个主题的好文章

Build your ASP.NET Pages on a Richer Bedrock

答案 4 :(得分:0)

您可以在客户端,服务器或两者上解决问题。

客户端您可以禁用提交按钮,显示提醒框,重定向用户等 - 查看this article

服务器端,您可以使用会话,并允许每个访问者只提交一次。

答案 5 :(得分:0)

除非保存/更改数据,否则我通常不担心额外的加载/提交。结果,我在数据修改逻辑中加入了强大的控制。加载数据时,我返回该数据的最后更改日期和时间。保存时,我确保现有数据与上次更改日期完全相同。第二次保存/更改将被中止,因为第一次保存将修改最后一次更改日期,使其不同。在初始保存(INSERT)的情况下,您可以添加逻辑以确保在最后X时间内没有为用户创建新项目。