我有一个旧的Framework1.1项目,有以下问题:如果用户提交一个页面,那么在数据库中可能会出现重复的记录。此错误经常重复,但并不一致:在大多数情况下,没有重复的条目,但在某些情况下,可能有多达4个重复条目。在第一次提交后,我们使用JavaScript禁用提交按钮。
这可能会有帮助:有一个用于存储用户输入(已提交)的会话对象。
你能想到为什么会发生重复记录的场景吗?
非常感谢
发布于 2012-05-30 16:51:04
最后,我发现一些手机浏览器忽略了禁用提交按钮的JavaScript,用户设法多次重新提交表单。
最简单的(?)对此的解决方案如下:
在数据库中创建一个包含两个字段的SubmissionTokens表: Token (唯一标识符),DateCreated (DateTime)。然后,当带有提交表单的页面加载时,将一个令牌添加到数据库中,并将"id“值保存在同一页面的隐藏字段中。当用户提交表单时,然后从隐藏字段读取令牌,并查看表SubmissionTokens中是否存在令牌。如果确实存在,则在数据库中插入一个包含表单数据的新记录,并从SubmissionTokens中删除该令牌。您还可以使用DateCreate字段使令牌过期。
在工作中,我实现了一个有点不同的解决方案,在插入新记录之前只在数据库中查找重复的记录。但这是因为有一个特定的要求,用户必须能够重新提交表单,如果他点击“后退”在浏览器中。在这种情况下,SubmissionToken已经被删除,第一个解决方案将不起作用。
https://stackoverflow.com/questions/10598032
复制相似问题