جلوگیری از کلیک تکراری در ASP.NET

اکثر مواقع نیاز داریم که از کلیک تکراری بر روی دکمه‌ها جلوگیری کنیم. روشهای متفاوتی برای این کار وجود داره، چه از سمت کاربر و چه از سمت سرور.

2 روشی که برای من کارآمدتر بود رو اینجا قرار میدم.

I.

$(function () {
    $("input[type='submit']").click(function () {
        if (Page_ClientValidate()) {
            $(this).val("صبر کنید...");
            $(this).prop("disabled", true);
            __doPostBack(this.name, '');
        }
    });
});

II.

protected void Page_Load(object sender, EventArgs e)
       {
           try
           {
               DisableSubmitButton(btnSend);
               DisableSubmitButton(btnRefresh);
           }
           catch (Exception err)
           { }
       }



       public static void DisableSubmitButton(Button button)
       {
           button.Attributes.Add("onclick", "this.disabled=true;this.value='صبر کنید...';" + button.Page.ClientScript.GetPostBackEventReference(button, string.Empty));
       }

یا استفاده از روش زیر:

<asp:Button runat="server" ID="btnExport" Text="دریافت فایل اکسل" CssClass="btn btn-info" OnClick="btnExport_Click" OnClientClick="DisableButton()" />
    function DisableButton() {
        $('#<%=btnExport.ClientID%>').val('صبر کنید...');
        $('#<%=btnExport.ClientID%>').prop('disabled', true);
        javascript:__doPostBack('<%=btnExport.UniqueID%>', '');
    }