atlasクライアントページサイクルイベントおよび実践:重複コミットの防止

7363 ワード

原文:劉武|atlasクライアントページサイクルイベントおよび実践:重複コミットの防止
ページの重複コミットを防止する方法については、前の記事で述べたように、参考にしてください.
  • モダリティDIVとUpdateProgressを組み合わせてページの重複コミットを防止
  • ASP.NETでボタンをクリックした後にそのボタンを使用不可にした場合
  • atlasクライアントページサイクルイベントおよび実践:クライアント検証

  • ここではatlasページサイクルイベントを用いてこの機能を実現する方法を紹介しますが、実際には、コミット前にbeginRequestイベントでボタンを使用できないように設定し、endRequestイベントでボタンの状態を復元することが原理です.次の例を見てください
    ASP.NET-Code:
    <form id="form1" runat="server">
        <asp:ScriptManager ID="sm1" runat="server">
        </asp:ScriptManager>
        <script type="text/javascript">
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(SetButtonStatus);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(SetButtonStatusEnd);
        var postButton ;       
        function SetButtonStatus(sender,args)
        {
            postButton =args.get_postBackElement();                    if (postButton.id=='btnPostBack')
            {
                postButton.disabled='disabled';
            }
        }
        function SetButtonStatusEnd(sender,args)
        {
            if (postButton.id=='btnPostBack')
            {
                postButton.disabled='';
            }
        }
        </script>
        <asp:UpdatePanel ID="up1" runat="server" UpdateMode="conditional">
            <ContentTemplate>
                <%=DateTime.Now.ToString() %>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnPostBack" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        <asp:Button ID="btnPostBack" runat="server" Text="LogIn" OnClick="btnPostBack_Click" />
    </form>



    protected void btnPostBack_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);        }



    ボタンは、非同期再送要求を送信しなければ有効ではないことに注意してください.


    リファレンス:


    1. beginRequest  
    2. BeginRequestEventArgs  
    3. endRequest  
    4. EndRequestEventArgs