是否存在某种设置,如果/当他们按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.