asp.net - 通过服务器端验证防止双击

标签 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中。在此先感谢。

-编辑-
我使用的方法如下。我添加了一个额外的诱饵按钮,该按钮已被禁用,并且显示css属性设置为none。然后,我使用了将隐藏“提交”按钮并在OnClientClick事件中显示诱饵按钮的javascript。最后,服务器端方法的结尾将更新按钮上的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");

最佳答案

之前我也遇到过类似的问题,而我想出的最佳解决方案是隐藏按钮,并用一个请稍候(或验证)的消息替换它。如果验证失败,则可以再次显示该按钮

关于asp.net - 通过服务器端验证防止双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274361/

相关文章:

javascript - 如果用户从一个页面转到另一个页面,我们如何看到 "Previous Page Result"

javascript - 获取 ASP 文本框的更改值

c# - 如何在 .Net2.0 中过滤通用列表?

asp.net - 使PasswordRecovery 控件能够与锁定的用户一起使用吗?

c# - 当 DataSource 未返回完整结果集时手动设置 GridView 的 PageCount?

c# - ASP.NET 文件上传控件允许的最大文件大小

c# - 如何使用 EWL 将自定义样式表添加到 Web 应用程序?

c# - Windows 事件查看器中未显示新的 Windows 日志

jquery - 将 ASP.NET Web 表单发送到 JQuery 自动完成的最佳实践

asp.net - ASP.NET中是否有任何 native 方法来执行 "success message"?