C# 防止快速提交按钮点击?

C# 防止快速提交按钮点击?,c#,.net,asp.net,C#,.net,Asp.net,我找到了这样的解决方案,但我的onclick事件已绑定到代码隐藏处理程序: MyButton.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(MyButton, "").ToString()); onclick="this.disabled=true;__doPostBack('MyContrl$MyButton','');" 我的代码: <asp

我找到了这样的解决方案,但我的onclick事件已绑定到代码隐藏处理程序:

MyButton.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(MyButton, "").ToString());

onclick="this.disabled=true;__doPostBack('MyContrl$MyButton','');"
我的代码:

<asp:imagebutton id="CheckoutBtn" runat="server" ImageURL="Styles/Images/submit.gif" onclick="CheckoutBtn_Click">

我假设您希望跳过在以前单击的特定时间范围内的单击。创建一个类变量“DataTime LastClickTime”,最初设置为DateTime.MinValue。输入单击处理程序时,请检查DateTime.Now-LastClickTime>TimeSpan(…所需…)是否为空,如果不是,请退出单击处理程序并返回。

尝试使用javascript禁用按钮,而不是在服务器端禁用它

<asp:imagebutton id="CheckoutBtn" runat="server" ImageURL="Styles/Images/submit.gif" onclick="CheckoutBtn_Click" OnClientClick="this.disabled=true;">


禁用按钮服务器端将不起作用,该按钮在回发后将被禁用,此时用户仍可以单击多次,在JavaScript中禁用它
this.disabled=true是成功执行此操作的唯一方法。

一种方法是对Javascript隐藏按钮并显示一些ajax加载程序图像

function btnClientClick()
{
   document.getElementById('CheckoutBtn').style.display = 'none';
   document.getElementById('dvLoader').style.display = '';
}

如果您试图阻止用户多次提交表单,最好使用Post/Redirect/Get模式处理

这是一个非常简单的模式,维基百科对此做了很好的解释:

您好,谢谢,但我认为我的CheckoutBtn_Click事件不会起作用,因为它会在第一次尝试时禁用按钮。嗯?如果使用javascript禁用按钮(如图所示),将发生以下情况-1)在用户浏览器中禁用按钮,2)发生回发,触发CheckoutBtn_Click,3)在运行该事件时,用户将无法再单击按钮。4) 事件完成后,您可以重新启用按钮或重定向用户。谢谢,我刚刚尝试过,但它没有触发我的签出按钮,而是触发代码中的页面加载,知道吗?嗨,我需要防止用户按标题所示多次单击“提交”按钮。当服务器没有响应时,用户最终会看到一个断页。
function btnClientClick()
{
   document.getElementById('CheckoutBtn').style.display = 'none';
   document.getElementById('dvLoader').style.display = '';
}