使用服务器端验证防止双击

时间:2009-08-13 20:24:25

标签: asp.net asp.net-2.0

我试图阻止用户双击我正在更新的页面的提交按钮。问题是必须要进行服务器端验证,以确定用户是否必须进行任何更新才能继续。我目前在表单的提交事件中有以下代码。

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />

如果这成为一个问题,那么页面不会通过验证。在这种情况下,我试图启用按钮的所有内容都失败了。他们很难在禁用提交按钮的情况下重新提交更正的信息。我在验证结束时尝试了以下两种方法来重新启用它。

SubmitPayment.Enabled = true;
SubmitPayment.Attributes.Add("disabled", "false);

我该怎么做才能重新启用此控件?这是在Visual Studio 2005中。提前感谢。

CNC中 我使用的方法如下。我添加了一个禁用的附加诱饵按钮,并将display css属性设置为none。然后我使用javascript来隐藏提交按钮并在OnClientClick事件中显示诱饵按钮。最后,服务器端方法的结束将更新按钮上的css属性以隐藏它们并在之后显示它们。

代码段如下。再次感谢您的帮助

function PreventDoubleClick()
    {
        var sp = document.getElementById("SubmitPayment");
        var db = document.getElementById("DecoyButton");
        sp.style.display = "none";
        db.style.display = "inline";
    }

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/>

DecoyButton.Style.Add("display", "none");
SubmitPayment.Style.Add("display", "inline");

1 个答案:

答案 0 :(得分:1)

之前我遇到过类似的问题,我提出的最佳解决方案是隐藏按钮并将其替换为请等待(或验证)消息。如果验证失败,您可以再次显示该按钮