none
怎样避免重复提交? RRS feed

  • 问题

  • 各位大侠:
      第一次将数据提交之后,由于网速等原因,控件值还未更新,如何避免将这些数据再次提交?
      请赐教!


    youl
    • 已移动 Raymond TangModerator 2010年3月5日 7:06 (发件人:.NET Framework 一般性问题讨论区)
    2010年3月5日 2:41

答案

  • 上面是客户端的解决方式,下面我说说如果在服务端处理这样的问题。

    重复提交造成的后果主要是在新增时在数据中增加多条一样的记录,产生这样问题原因的同时数据表一般没有主键、主键是自增 ID或没有唯一约束。了解了这个原因,我们就可以通过将主键的类型改为 guid 或为表增加唯一约束来解决这个问题。



    知识改变命运,奋斗成就人生!
    • 已标记为答案 youer3 2010年3月7日 5:22
    2010年3月6日 1:40
    版主

全部回复

  • 1.点击提交按钮后,设置按钮不可用
    <asp:button id="btnSubmit" onclick="btnSubmit_Click" runat="server"  OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False" /> 

                解决重复提交:OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"

               或者  this.btnSubmit.Attributes["onclick"] = this.GetPostBackEventReference(this.btnSubmit) + ";this.disabled=true;";     //防止重复提交

    2.在提交后使用Response.Redirect重新转向本页面
        tp://blog.sina.com.cn/s/blog_4ee6ad380100bmqu.html

    3.使用AJAX
       tp://yaya123.blog.51cto.com/341518/92477
    努力+方法=成功
    • 已标记为答案 youer3 2010年3月7日 5:22
    • 取消答案标记 youer3 2010年3月7日 6:07
    2010年3月5日 2:54
  • 可以在页面中用DIV建立一个蒙板,在CSS中设为隐藏,提交时再把隐藏取掉.
    一句话提交时用透明的DIV把所有的控件和内容挡住.
    2010年3月5日 10:21
  • 提交后,在页面上显示一个蒙板,把东西都挡住,不允许用户编辑,做的好点可以再加个进度条
    咯咯
    2010年3月5日 15:26
  • 上面是客户端的解决方式,下面我说说如果在服务端处理这样的问题。

    重复提交造成的后果主要是在新增时在数据中增加多条一样的记录,产生这样问题原因的同时数据表一般没有主键、主键是自增 ID或没有唯一约束。了解了这个原因,我们就可以通过将主键的类型改为 guid 或为表增加唯一约束来解决这个问题。



    知识改变命运,奋斗成就人生!
    • 已标记为答案 youer3 2010年3月7日 5:22
    2010年3月6日 1:40
    版主
  • 再设置一下蒙板的透明度,把鼠标指针设为忙.就更好了.
    2010年3月6日 2:36
  • what 's happen after click f5  button?
    2011年3月10日 8:58