加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net阻止表单提交两次

发布时间:2020-12-16 00:06:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个Web表单Web应用程序(asp.net 2.0).当用户提交表单时,我的提交链接实际上已经消失,因此他们无法再次提交.但是,他们可以按F5,这会导致另一个插入数据库,我不希望发生这种情况. 是否存在某种设置,如果/当他们按F5告诉页面时我可以设置 – 不再提交? 解
我有一个Web表单Web应用程序(asp.net 2.0).当用户提交表单时,我的提交链接实际上已经消失,因此他们无法再次提交.但是,他们可以按F5,这会导致另一个插入数据库,我不希望发生这种情况.

是否存在某种设置,如果/当他们按F5告诉页面时我可以设置 – 不再提交?

解决方法

听起来你正在对同一页面进行回发,然后在将同一页面重新显示给用户之前插入数据库,减去提交按钮?

如果是这种情况,解决问题的最简单方法是对同一页面执行Response.Redirect() – 因此当用户按下F5时,它会将GET请求重新加载到页面而不是POST.

说明:

当您在ASP.NET中进行回发时,浏览器将向服务器发送POST request.我不知道你在HTTP方法中的背景,但即使你是网络编程的新手,你也可能在浏览器中遇到过这些类型的请求的影响.有时,当您在网站上提交表单并点击后退按钮时,会说“您想重新提交表单数据”.这是因为这些表单使用HTTP POST方法将数据发送到服务器.在这种情况下后退按钮的效果与按F5时的效果相同 – 浏览器重复完全相同的POST请求(这需要某种类型的表单数据,在这些情况下,它与您最后提交的数据相同时间).

当您使用Response.Redirect()时,服务器正在发出HTTP status code 302(临时移动资源)以响应请求.然后,浏览器将发出GET请求,告知其已被告知要重定向到的资源(在这种情况下,是您的确切页面).

现在,当您在页面上时,它会被返回,就像您从链接访问它或直接将其键入地址栏一样.如果您这次按F5,将发出GET请求而不是POST.

我建议你download Firebug并激活“Net”面板.您可以准确地查看组成请求/响应的内容以及页面上所有请求的列表.

更多资源:

如果您喜欢冒险,可以查看even more status codes(顺便说一句,我实际上在一个应用程序中使用了418,我正在努力解决ASP.NET的Forms身份验证问题).

如果Firebug还不够,你可以下载Fiddler,然后根据自己的喜好手动和重播请求.

如果GET和POST不够,您可以使用其他方法更改应用程序中的状态.您可能听说过RESTful architecture,它基本上使用HTTP方法GET,PUT,POST和DELETE.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读