经典问题,呵呵,用“鬼按钮”:
http://www.2404.co.uk/index.php?path=articles/view.php&articleId=19

解决方案 »

  1.   

    Heres what we're going to do: 
    1.Hide our server side button on the client 
    2.Create a client-side button that 'clicks' it the server side button for us The Code:
    <script language="c#" runat="server">
         void click(object sender, EventArgs e)
         {
              Response.Write(txt.Text);
         }
    </script>
    <form runat="server">
    <asp:TextBox id="txt" runat="server"/>
    <input type="button" onClick="this.disabled=true; setTimeout('document.forms[0].btn.click()',3000);" value="Go!"/>
    <asp:Button id="btn" onClick="click" runat="server" Style="display: none"/>
    </form>这是一种偷天换日的做法,呵呵
    问题就算解决了一半吧,这只能保证我点下按钮后,“鬼按钮”变灰,但不能确定后台代码执行完,按钮状态恢复
    这个怎么解决????
      

  2.   

    呵呵,是啊,所以叫ghost button。关于你的问题,答案是:这个按钮会自动恢复的。不信你可以试试现有的代码。原理也很简单,因为这个ghost button不是server control,没有viewstate,所以ASP.NET会将这段html原样送回:
    "<input type="button" onClick="this.disabled=true; setTimeout('document.forms[0].btn.click()',3000);" value="Go!"/>"
    其实说白了,就是html是stateless的,ASP.NET回送网页到browser的时候,所有html的标记都是初始值,既然这个ghost button初始是enable的,那么ASP.NET回送的网页中,它仍是enable的。