表单上有一个按钮,如何防止用户点击一次,在未完全传回服务器时(页面未刷新),再点击一次按钮,结果造成提交两次(两次将同样数据写入数据库)。

解决方案 »

  1.   

    when you click it,you could set it enable false using clientscript;
      

  2.   

    <script language=javascript>
    var option="";
    function Twice()
    {
      if(option=="Once")
      {
        document.all("mybutton").Enable = false;
        return false;//这句记不得要不要加了
      }
      option = "Once";
    }
    </script>
    <body>
      <form id=form1 runat=server>
      <input type=button id=mybutton onclick="Twice();">
      </form></body>
      

  3.   

    用一个ViewState变量作为计数器记录提交数据的次数,然后在按钮点击事件前检查这个计数器
      

  4.   

    请参考:
    How to prevent multiple clicks of a submit button in ASP.NET:
    http://www.cnblogs.com/fengzhimei/archive/2004/08/03/29642.aspx
      

  5.   

    使用session吧
    第一次单击后,马上给session赋值,然后在处理事件的方法里再确定session为空再执行...
      

  6.   

    第一次提交完毕之后
    Response.Redirect(Request.Url.ToString());
      

  7.   

    对,经过我的测试,现在最好的办法就是用session做标记了!
    private void Button1_Click()
    {
      if(Session["submit"]!=null)
      {
        ....
        return;
       }
       ....
       Session["submit"]="submit";
    }
      

  8.   

    1,可以用viewstate做个标记,如果正确的提交过了,就标记一下,否则,不标记2 
    -----------------------------------------------
    结果造成提交两次(两次将同样数据写入数据库)。
    -----------------------------------------------
    如果可以你可以在数据写入的时候 判断一下是否有重复的记录
      

  9.   

    as i have said,first after you have clicked it,you set it enable false using clientscript,then when your server method is done,you could set it enable true;
      

  10.   

    脚本
    <script language="javascript">
         var Flag = false;
         function CheckSubmit()
         {
             if(Flag == true) 
             {
                  alert("正在提交数据!");
                  return fasle;
             }
             Flag = true;
             return true;                    
          }
    </script>
    在form中加上<form onsubmit="return CheckSubmit()" runat="server"/>
      

  11.   

    Response.Redirect(本页)或是
    指向另外一个页面ok.aspx