日期:2014-05-17  浏览次数:20564 次

防止页面刷新重复提交数据
防止页面刷新重复提交数据
前提条件是 我先前的数据不清空的情况下 刷新不提交数据
这样的话 重新定向什么的都失效了 有没有什么好的方法

------解决方案--------------------
引用:
Quote: 引用:

Page_load里面

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Expires = 0; Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.AddHeader("pragma", "no-cache");
Response.CacheControl = "no-cache"; 

试试看,提交后网页就过期了,无法通过F5重新提交。

另外还有一个就是你提交成功后,重新respons定位到当前页,页可以防止F5重复提交。

并非通过F5刷新的页面,而是在A页面中 点击按钮打开B页面,B页面关闭的时候,通过JS使其刷新的

这个也简单啊,用模式对话框打开B,B关闭的时候,JS的window.location重新指向A页面就会重新加载了。
不知道你说的B页面关闭的时候 A页面你是如何控制的,或者是哪里会出现重复提交的问题?
------解决方案--------------------
楼上的各位都没有明白楼主提问的意思

楼主不是要怎么打开其他页面刷新本页面的方法


而是问怎么实现: 本页面提交后,按下F5不会重写提交一次,但是必须还能保存之前一次提交的数据在相应的表单里面。

要解决楼主的问题,如下思考:
  按下F5 如果是用服务端表单(或者服务端按钮)提交的数据,100%会重新提交一次,
所以两种思路

1,服务端提交之后重新打开此页面(即楼上各位回答的跳转啊什么的),但是要保存表单数据,所以需要把提交的值当作参数或者从某处读取(读取提交到数据库中的数据,也可以是临时存放处,如session、cookies//这个没必要,既然是提交的数据,直接数据库读取就好,没必要再保存个临时数据)再次传递过来,这样重新跳转到此页面后,获取值给各个标签赋值

2,客户端提交,ajax提交数据 ,这样按F5  100%不会重新提交,但F5之后要能保存表单值,一样需要重新赋值(把提交到数据库中的数据重新读取,然后赋值)