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

怎样避免提交表单后,刷新页面造成的重复提交
还是以前我问过的问题,这个到底该怎样解决?
比如我一个定义一个全局变量
static int num = 0;
使用服务器控件按钮,在单击事件里面
num++;
单击后,num值为1,F5刷新后num值为2了。

我只想要那种普通的刷新而已,这样的情况怎样避免?
难道不用服务器控件按钮,用ajax异步提交么?

------解决方案--------------------
ajax可以,还有你加个hidden控件,提交前给hidden先赋值1
在page_load里判断hidden是否有值,有值则是提交的,没值就是刷新的
------解决方案--------------------
提交后执行
            this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dd",
                "<script>alert('编辑成功!');location.href='About.aspx?action=edit&id=" + Request.QueryString["id"] + "';</script>");
------解决方案--------------------
用jquery ajax提交
------解决方案--------------------
1.ajax 
2.session
3.跳转
------解决方案--------------------
或者数据库验证
------解决方案--------------------
F5刷新重复提交上一次的表单,这是个常见的问题。可以用hidden和session做一个同步标识,初始化hidden和session中的标识相同,在页面回传时只需要判断这2个标识是否相同,如果相同则正常执行,同时刷新hidden和session中的标识值;如果2个标识中的值不相等,说明hidden的值是上一次的表单内容,属于刷新行为
------解决方案--------------------
加个时间戳,应该是为了避免F5刷新的问题吧。
------解决方案--------------------
记得HttpRequet["Accept"]的值好像是有区别的,可以用来做判断。
------解决方案--------------------
禁止刷新页面行吗?
------解决方案--------------------
!Page.IspostBack
------解决方案--------------------
jquery.form.js      LZ网上查查这个,能够是页面无刷新提交。。。
------解决方案--------------------
引用:
提交后执行
            this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dd",
                "<script>alert('编辑成功!');location.href='About.aspx?action=edit&amp;id=" + Request……


这个方法或者1楼的方法,1楼的方法在提交时候判断下隐藏域的值