asp.net - 如何防止用户点击按钮两次?

标签 asp.net webforms

我有一个旧的 ASP.NET Web 表单应用程序 (.NET 2.0),该应用程序的进程在单击按钮时需要 30 秒左右的时间才能运行。我需要防止按钮被单击两次。这将防止发布两次,从而导致数据库中出现重复数据。

我尝试添加;

OnClientClick="this.disabled='true';"

尝试禁用 JavaScript 中的按钮。但是,尽管该按钮被禁用,但该按钮的回发不起作用。

禁用该按钮以防止多次提交是此应用程序的理想选择。我怎样才能做到这一点?

编辑

我无法使用第三方控件。

最佳答案

如果您只是禁用该按钮,则 ASP.NET 将不会发布该表单。您还想处理客户端验证。这是我的解决方案:

<asp:Button runat="server" ID="btnSave" 
   Text="Save" OnClick="btnSave_Click" 
   OnClientClick="if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';" 
   UseSubmitBehavior="false" />

参见@Dave Ward's post有关 UseSubmitBehavior 的说明。

如果您有多个验证组,您需要为此增强此解决方案。

关于asp.net - 如何防止用户点击按钮两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137172/

相关文章:

javascript - 如何从提交的内容中删除恶意 HTML(XXS 等)?

ASP.NET:压缩 ViewState

c# - 如果可为 null 的属性为 null 或为空,如何从序列化中忽略它?

asp.net - 如何设置 GridView 中编辑按钮列的宽度?

c# - 如何在标记中添加项目以供用户控制?

asp.net - 歌剧错误 : src ="" generated by asp:image is empty

c# - ASP.NET 如何根据另一个页面的单击事件更新页面

javascript - ASP WebForms 在回发时重新评估属性

c# - 在 Gridview 分页器中插入自定义按钮

c# - 从 PostAsync() 读取 XML 响应