zoukankan      html  css  js  c++  java
  • ASP.Net中防止页面刷新重复提交的几种方法

    【摘要】

    目前很多网站都要提交页面插入或更新数据库,比如留言本,一个用户提交留言后,如果按F5,就会重新提交一遍留言,导致数据库出现两条一模一样的留言,
    本文介绍了几种防止页面刷新,导致重复提交数据的方法。

    本站原创,转载请注明: http://beinet.cn/blog/


    【全文】

    1、也是最简单和最常用的办法,就是使用转向页面语句,分两种:
        a.使用服务器端的 Response.Redirect("YourPage");
        b.使用客户端脚本 <script language=javascript>location.href='yourPage';</script>
        这两种方法的缺点是如果要保留页面数据不太方便,如果不用保留可以采用。

    2、操作完毕设置一个Session,进入页面时判断这个Session是否为null,如果不是表示已经提交过了,但是缺点就是这个页面无法再提交了,必须在别的页面清空这个Session。

    3、是从网上搜索到的一种方案,学习并共享一下:
    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;  
        }  
      }  
      }

     
  • 相关阅读:
    方便的使用单击和双击更新DataGrid中的数据的例子 (转)
    针对 .NET 开发人员的存储过程评估(转)
    ASP.NET创建Web服务之XML基础结构(转)
    移动业务咨询系统--用VoiceXML开发语音应用程序(转)
    创建动态数据输入用户界面 (转)
    ASP.NET缓存:方法和最佳实践(转)
    ASP.NET 应用程序性能优化(转)
    出色图形用户界面(GUI)设计规范(转,中英对比)
    五种常见的ASP.NET安全缺陷(转)
    ASP.net控件开发系列之(一)开篇(转)
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2082084.html
Copyright © 2011-2022 走看看