熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

防止ASP.NET按鈕多次提交的辦法

2022-06-13   來源: .NET編程 

  網上查了很多方法都不太好使不如自己寫一個思路就是把按鈕按下時用Javascript在客戶端把按鈕下一次的onclick事件改為return false; 這樣在服務器端頁面重新送回客戶端之前再次點擊按鈕都不會Post到服務端同時將按鈕的style改為一行字的樣子光標也變成沙漏狀當服務端頁面重新產生後Button又會回到初始狀態該方法對於F刷新還不能防范只是簡單封閉了F的按鍵為了防止刷新時再次提交可以在頁面返回前將一些TextBox控件清空這樣就可以判斷如果該TextBox為空則不再進行後續操作(如寫庫) 或是後台操作成功後跳轉到另一個頁面以防止惡意刷新主要是考慮在企業內網使用不是為了防黑客所以不是非常嚴格 

         <html xmlns=http://wwwworg//xhtml>
        <head runat=server>
            <title>禁止多次提交網頁測試</title>
            <style type=text/css>
            disable
            {
                borderstyle:none;
                borderwidth: thin;
                backgroundcolor:Transparent;
                color: #CCCCCC;
                cursor:wait;
            }
            </style>
            <script type=text/javascript language=javascript>
            function DisableButton()
            {
                documentgetElementById(Button)className  = disable;
                documentgetElementById(Button)value = 正在提交;
                documentgetElementById(Button)onclick=Function(return false;);
                return true;
            }
            documentonkeydown=mykeydown;
            function   mykeydown()
            {
                if(eventkeyCode==) //屏蔽F刷新鍵
                {
                    windoweventkeyCode=;
                    return   false;
                }
            }
            </script>
        </head>
        <body>
            <form id=form runat=server>
            <div>
                輸入一些內容<asp:TextBox ID=TextBox runat=server></asp:TextBox>
                <br />
                <asp:ListBox ID=ListBox runat=server Height=px Width=px>
            </asp:ListBox><br />
                <asp:Button ID=Button runat=server Text=OK Width=px
                    onclick=Button_Click />
            </div>
            </form>
        </body>
        </html>


From:http://tw.wingwit.com/Article/program/net/201311/14910.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.