CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

急!怎样防止页面刷新时,再次提交上次数据!

楼主changezhong(小刀)2005-08-09 13:36:40 在 .NET技术 / ASP.NET 提问

点一个Button后,刷新页面,页面会再次提交上次的数据,并执行按钮的动作,这会使得有些Insert,Update动作重复执行,怎样才能避免刷新页面时重复提交?  
   
  请不要使用页面重定向方法,因为页面数据需要保留 问题点数:100、回复次数:57Top

1 楼gxboy(Blin 小学生学.NET)回复于 2005-08-09 13:42:42 得分 5

非asp.net控件表单的提交。在一个page页上放一个ifram,指定表单提交的框架为这个ifram,提交后禁用表单。  
   
  ifram长宽可指定为0,这样在网页中就看不见。Top

2 楼smoothwood(吾谁与归)回复于 2005-08-09 13:46:37 得分 5

在page_load中加上  
                          Response.Cache.SetCacheability(HttpCacheability.NoCache)Top

3 楼TankBu(坦克布)回复于 2005-08-09 13:58:55 得分 0

后台好像没什么好办法,  
  关掉Cache只能防后退,不能防止刷新重复提交数据吧Top

4 楼kgdiwss(∮明天去要饭)回复于 2005-08-09 14:03:51 得分 5

http://blog.csdn.net/kgdiwss/archive/2005/08/04/445846.aspxTop

5 楼zhangA()回复于 2005-08-09 14:07:17 得分 0

要不你就截获数据库错误Top

6 楼TankBu(坦克布)回复于 2005-08-09 14:10:05 得分 0

如果数据库没错误呢?  
  很多时候重复刷新并不会造成数据冲突啊Top

7 楼xvhaijun(狱海)回复于 2005-08-09 14:38:10 得分 0

Response.Write("<script   language=javascript>window.location.href='本页地址';</script>");Top

8 楼xvhaijun(狱海)回复于 2005-08-09 14:46:14 得分 0

要求保留提交的是内容?  
  还是页面还有其他的数据?  
  既然已经写进去了,如果没别的好注意,退而求其次,在重新加载页面的时候在从数据库读吧...  
  很烂的办法,大家别笑话俺Top

9 楼fengyunyubin(风云)回复于 2005-08-09 14:47:08 得分 0

你的页面的PAGE_LOAD方法里有没有判定是否第一次载入啊?让页面在非第一次载入时,不用再执行那些方法!Top

10 楼w3k(网络3K)回复于 2005-08-09 14:48:56 得分 0

??Top

11 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2005-08-09 14:52:15 得分 0

在提交的代码后面  
  加上  
  Response.Write("<script   language=javascript>alert('操作成功');window.location.href=window.location.href;</script>");  
  Top

12 楼yeskele()回复于 2005-08-09 15:00:36 得分 0

Response.Write("<script   language=javascript>alert('操作成功');window.location.href=window.location.href;</script>");  
   
  这个正解Top

13 楼brando_beat(Eの懒龙)回复于 2005-08-09 15:09:40 得分 0

upTop

14 楼sd166(原来如此)回复于 2005-08-09 15:14:03 得分 5

楼主用的是03版本吧,在02版本不会出现这个问题,03版本在ViewState中保存了上次执行的事件状态,所以你当提交完后刷新,会重新执行一遍该事件,Response.Write("<script   language=javascript>alert('操作成功');window.location.href=window.location.href;</script>");这个方法虽然可以去除这一问题,但这样做的结果是你ViewState中的其它值也将会丢失,如在程序中无需保留,可以采用,但如还需用到ViewState中的值,这个方法也并不好,可以用这种原始方法:用程序控制,即在你的程序中用代码控制,如库中此记录已存在则不预插入.Top

15 楼smile9961(good life)回复于 2005-08-09 16:34:52 得分 0

回复人:   yeskele(可乐)   (   )   信誉:100     2005-08-09   15:00:00     得分:   0      
     
     
        Response.Write("<script   language=javascript>alert('操作成功');window.location.href=window.location.href;</script>");  
   
  这个正解  
  -------------------------------------------------------------  
  需要重新定向到本頁或者定向到其它頁面。  
     
  Top

16 楼fengjiehappychen()回复于 2005-08-10 09:34:47 得分 0

upupTop

17 楼aqian2001(像风一样)回复于 2005-08-10 09:58:25 得分 0

uptoo  
  Top

18 楼JadyZhu(木独朱)回复于 2005-08-10 10:25:51 得分 0

在数据库添加数据时进行控制,重复则不添加;通过Exception捕获的错误代码判断错误类型。Top

19 楼oupatch(QQ:47668753)回复于 2005-08-10 10:28:07 得分 0

提交记录后,最后重定位到本页Top

20 楼visualcpu(VisualCpu)回复于 2005-08-10 10:32:23 得分 0

回复一下,主要想看一下信誉分,好久没有来,见谅Top

21 楼peterHunter()回复于 2005-08-10 10:32:40 得分 0

关注Top

22 楼loveeqing(馨郁星愿→ 看过来........)回复于 2005-08-10 10:58:15 得分 0

我也碰到Top

23 楼zhaoliang_chen(龙行天下)回复于 2005-08-10 11:02:58 得分 0

难题Top

24 楼haoztao(.NET一族)回复于 2005-08-10 11:34:38 得分 0

在page_load中加上  
                          Response.Cache.SetCacheability(HttpCacheability.NoCache)  
  Top

25 楼iloveyour(爱老虎油)回复于 2005-08-10 12:05:21 得分 0

markTop

26 楼ieooo(Jet)回复于 2005-08-10 12:35:38 得分 0

markTop

27 楼hbtm(初中学历)回复于 2005-08-10 12:36:43 得分 0

加if(!ispostback)不知道行不行Top

28 楼hainang1234(海浪)回复于 2005-08-10 12:55:34 得分 0

为什么不能使用重定向?  
   
  需要保留数据就不能使用重定向?  
   
  Response.RedirectTop

29 楼sstgaps()回复于 2005-08-10 12:55:38 得分 0

可以设定一个SESSION变量来判断是否是第一次提交Top

30 楼GSXiaoXiao(牧羊人)回复于 2005-08-10 13:09:28 得分 0

 
  也遇到此问题,等候最终答案.Top

31 楼chilin(永恒的月亮)回复于 2005-08-10 13:25:51 得分 0

markTop

32 楼skyfarwolf(Computer)回复于 2005-08-10 13:37:54 得分 0

我用过Session来解决这个问题,也用过从数据库读记录进行判断.Top

33 楼kgdiwss(∮明天去要饭)回复于 2005-08-10 14:24:54 得分 0

不是已经给你答案了吗??  
   
  http://blog.csdn.net/kgdiwss/archive/2005/08/04/445846.aspx  
   
  还不结贴。Top

34 楼coldpanth(^War3^)回复于 2005-08-10 14:28:26 得分 80

转,孟老大的解决方法  
   
  如何区分刷新和提交?  
   
  DetectRefresh.aspx  
  ===========================  
   
  <%@   Page   Inherits="StevenBey.Web.UI.Page"   %>  
  <html>  
  <head>  
  <title>Detecting   Page   Refresh   [Demo]</title>  
  </head>  
  <body>  
  <form   runat="server">  
  <asp:button   Text="Test   Refresh"   runat="server"   />  
  </form>  
  IsRefresh   =   <%=   IsRefresh   %>  
  </body>  
  </html>  
   
   
  StevenBey.Web.UI.Page.cs  
  ======================  
  namespace   StevenBey.Web.UI  
  {  
  public   class   Page   :   System.Web.UI.Page  
  {  
  private   bool   _refreshState;  
  private   bool   _isRefresh;  
   
  public   bool   IsRefresh  
  {  
  get  
  {  
  return   _isRefresh;  
  }  
  }  
   
  protected   override   void   LoadViewState(object   savedState)  
  {  
  object[]   allStates   =   (object[])   savedState;  
  base.LoadViewState(allStates[0]);  
  _refreshState   =   (bool)   allStates[1];  
  _isRefresh   =   _refreshState   ==   (bool)   Session["__ISREFRESH"];  
  }  
   
  protected   override   object   SaveViewState()  
  {  
  Session["__ISREFRESH"]   =   _refreshState;  
  object[]   allStates   =   new   object[2];  
  allStates[0]   =   base.SaveViewState();  
  allStates[1]   =   !_refreshState;  
  return   allStates;  
  }  
  }  
  }Top

35 楼haolaiwu(宁愿相信世界上有鬼,也不相信女人那张嘴)回复于 2005-08-10 14:37:38 得分 0

支持!!!!!!!!Top

36 楼share1011(不知道)回复于 2005-08-10 15:21:13 得分 0

coldpanth(云之飘渺)    
  vb   的呢???Top

37 楼jxf_yx(清风)回复于 2005-08-10 17:58:17 得分 0

Page.SmartNavigation   =   true;  
  既可以了。Top

38 楼TankBu(坦克布)回复于 2005-08-11 13:10:04 得分 0

To   :   kgdiwss  
  请看清楚要求:"请不要使用页面重定向方法,因为页面数据需要保留"  
   
  孟子的思路不错,完善一下就可以用了Top

39 楼c97164()回复于 2005-08-11 13:34:48 得分 0

我也遇到.不过我解决了.就是重定向.你如果要保留数据就用hidden控件把数据保留不就完了.Top

40 楼wufeng0524(高处不胜寒)回复于 2005-08-11 13:40:04 得分 0

学习。。  
  __________________________________________  
  DotNet中华网:www.aspxcn.orgTop

41 楼lei00529(老婆叫我猪)回复于 2005-08-11 15:01:31 得分 0

支持孟子老大!Top

42 楼lazycat818(lazycat818)回复于 2005-08-11 15:47:39 得分 0

我个人不喜欢利用页面来提交数据,尤其是页面需要保留的情况下。我建议使用Webservice。Top

43 楼cwlcwr()回复于 2005-08-13 13:44:30 得分 0

关闭STATEVIEWTop

44 楼Study_Now( ? )回复于 2005-08-13 15:21:14 得分 0

红酷叉们:  
  在page_load中加上  
                          Response.Cache.SetCacheability(HttpCacheability.NoCache)  
   
  不能实现楼主的要求,它只是不让后退。不信你们试试!!!!Top

45 楼Aa7643()回复于 2005-08-13 23:00:22 得分 0

mark  
  Top

46 楼pandahyang(偶在学习.NET)回复于 2005-08-13 23:39:46 得分 0

用Session这个比较方便,第一次提交数据时把Session设置为一个值,如果他重复提交的话就判断这个Session是否有值存在就可以了Top

47 楼smin1994(smin1994)回复于 2005-08-15 11:07:29 得分 0

markTop

48 楼jackyR(月夜随想 )回复于 2005-08-22 23:11:47 得分 0

markTop

49 楼hbtm(初中学历)回复于 2005-08-23 11:32:51 得分 0

uoTop

50 楼fanweiwei(黑暗凝聚力量,堕落方能自由)回复于 2005-08-23 11:46:57 得分 0

UPTop

51 楼rusheagle(一条象猪的鱼在水里游来游去)回复于 2005-09-04 15:26:52 得分 0

markTop

52 楼tigerjacky(林石--抢滩VC)回复于 2005-09-04 19:31:11 得分 0

markTop

53 楼harrisonyu(badog)回复于 2005-09-04 19:47:38 得分 0

mark  
  Top

54 楼zeusvenus()回复于 2005-09-04 20:02:50 得分 0

是返回页面的问题,把你取要填充到数据库中的值及数据更新等代码放到  
  if(!(Page.IsPostBack))  
  {  
  }  
  中试试。  
  这样不会清空你的页面数据也不会重复提交。Top

55 楼woainin(woainin)回复于 2005-09-04 22:22:25 得分 0

if(!(Page.IsPostBack))  
  {  
  }  
  Top

56 楼kuibobo(^踏雪无痕)回复于 2005-09-04 22:47:59 得分 0

帮你   UP  
  关注Top

57 楼xjtandqt(重在参与)回复于 2005-12-05 20:50:53 得分 0

markTop

相关问题

  • 怎样防止页面提交时刷新DropDownList的值?
  • 提交后刷新页面
  • 请教:如何防止页面刷新造成的数据重复提交?
  • 页面提交后刷新页面数据又提交
  • 页面刷新提交的问题
  • 页面刷新后重复提交
  • 请教:如何防止页面被刷新而导致数据被重复提交
  • 如何防止页面刷新???
  • 请问:在同一页面提交留言,并显示留言,怎样才能防止多次刷新,留言重复
  • 为什么刷新以后页面提交动作会发生?

关键词

  • .net

得分解答快速导航

  • 帖主:changezhong
  • gxboy
  • smoothwood
  • kgdiwss
  • sd166
  • coldpanth

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo