程序开发 > C# > 正文

asp.net刷新不重复提交表单的最简单有效方法

亮术网 2013-12-12 本网原创

  在网页开发过程中,很容易出现重复提示表单的问题,无论用 asp.net 还是用 PHP,都会出现这种情况。当网速慢的时候,用户提交表单后,见长时间没有提交成功就刷新,如果第一次提交成功还没有返回,接着刷新又提交一次造成重复;或者有些用户故意搞破坏,提交成功后不断刷新导致提交大量重复内容,不但拖慢网站运行速度,而且浪费数据库空间;所以防止刷新重复必不可少。

  网上有很多防止asp.net刷新重复提交表单的示例,大多都用 session 实现,不但效果不怎么好,并且占用有限的服务器资源。其实不用那么麻烦,有两种简单又有效的方法能防止刷新重复提交。

 

  一、方法一:提交表单后重定向其它页或当前页

  1、在大多数情况下,提交表单后都会转到其它页,代码很简单:Respone.Redirect(网址),但这样情况不能防止用户后退回去刷新。

 

  2、重定向到当前页

  提交表单后,重新载入一次当前页,使表单中的所有数据为空,就可防止刷新重复提交;不过这是一种低效方法,要多载入一次网页,如果服务器资源紧张,浪费资源拖慢网站。

 

  二、方法二:用Http头的Accept判断是否刷新

  这个方法是最简单有效的方法,只用一句代码就可实现,经测试可有效捕捉到网页的刷新状态,代码如下:

  if(Request.Headers["Accept"] == "*/*")
  {
    return;//刷新返回
  }

  Headers 的 Accept 等于 */* 表示刷新网页,直接返回就可以阻止再次提交了,不过要在提交 button 代码中返回,不可放在函数中返回, 那样返回无效。

  第二方法是一种很不错的方法,只可惜在网上搜索防止刷新重复提交却不一定能找到,原因文章开头也说了,所以有不少网站开发人员可能还不知道。

本文浓缩标签:刷新重复提交表单