This article will demonstrate a way to prevent multiple button clicks on ASP.NET Web Forms. Preventing multiple clicks can help prevent multiple server-side events from firing and thus reduces the chance of duplicate information being saved to the database.
Concept
- Disable a button control on client side.
- After performing some server-side tasks, enable the button from code-behind.
Please Note
In this example, you will need to be using an HTML button instead of ASP.net button.
Markup
<input type="button" id="SaveButton" value="Save" runat="server" onclick="this.disabled=true;" onserverclick="SaveButton_ServerClick" />
To Enable Client-Side Validation
If you want to enable client side validation along with the button click, the markup should be 'slightly' changed to.
<input type="button" id="SaveButton" value="Save" runat="server" onclick="if(Page_ClientValidate() == true){this.disabled=true;}" onserverclick="SaveButton_ServerClick" />
Code-behind (Visual Basic)
Protected Sub SaveButton_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs)
Me.Validate()
If Page.IsValid Then
'****************************
'Save information to database.
'****************************
End If
If SaveButton.Disabled Then
SaveButton.Disabled = False
End If
End Sub
Code-behind (CSharp)
protected void SaveButton_ServerClick(object sender, System.EventArgs e)
{
this.Validate();
if (Page.IsValid) {
}
//****************************
//Save information to database.
//****************************
if (SaveButton.Disabled) {
SaveButton.Disabled = false;
}
}
The ASP.NET Wiki was started by Scott Hanselman in February of 2008. The idea is that folks spend a lot of time trolling the blogs, googlinglive-searching for answers to common "How To" questions. There's piles of fantastic community-created and MSFT-created content out there, but if it's not found by a search engine and the right combination of keywords, it's often lost.
The ASP.NET Wiki articles moved to CodeProject in October 2013 and will live on, loved, protected and updated by the community.