asp.net阻止表单提交两次

前端之家收集整理的这篇文章主要介绍了asp.net阻止表单提交两次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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.

猜你在找的asp.Net相关文章