防止重复提交

当用户不慎操作时,容易重复提交,可能会引起数据的重新操作.通常引发重复提交有两种情况,一是按刷新键(F5或工具栏中刷新键)或是页面右键菜单中的刷新项.第二中情况是提交数据后退,再前进.

对于第一种情况可以在页面加个隐藏域(即隐藏框<input type=hidden>),每次提交前,给这个隐藏域赋上一个随机值,这样每次提交这个字段都是不同的.

<head>
<script  language="javascript" type="text/javascript">
function fsubmit()
{
    document.getElementById("hfd").value=Math.round(Math.random()*1000);
    form1.submit();
}
</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="test.aspx">
<label>
<input type="hidden" name="hfd"  id="hfd"/>
<input type="button" name="Submit" value="提交"  οnclick="fsubmit()"/>

</label>
</form>

</body>

在服务端,用Session保存这个字段的值.通常过判断Session值和传过来值比较,如果相同则提示重复提交.最后把传过来值保存在Session中,以下用于下次比较.服务端如下:
bool isRepSubmit = false;
if(!IsPostBack) //第一次加载时设置Session为空
     Session["hfd"]=null;
string rand = Request.Form["hfd"];
if (Session["hfd"] != null && Session["hfd"].ToString() == rand)
{
     isRepSubmit = true;
     //提示重复提交
}
else
     Session["hfd"] = rand;
对于第二种情况可以可以采用网页过期的办法,如下:在Page_Load中加入.
Response.Buffer=true;
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值