By Nannette Thacker
If you're new to ASP.NET, let me offer you a word of caution in regard to using the
onclick event within your controls and the
Handles key word within your procedure declarations. To demonstrate this, let's create a web form and add these two controls:
<asp:Button ID="Button1" runat="server" Text="Button"/><br /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
Double-click the button in your Design view, and you will be taken to the codebehind where you may see that a new
Button1_Click Sub has been created for you. Notice the
Handles Button1.Click key word has automatically been added to the end of the procedure declaration to handle the Button Click event.
Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
If you utilize the code as generated, you are safe. However, what if you are copying and pasting from someone else's snippets? You may see
onclick="Button1_Click" added to the button:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click"/><br /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
Beware of this common mistake. You must choose either the
onclick within the button or the
Handles keyword within the procedure declaration. Let's look at what happens if you have both in your code. To test this, I altered my Label1 to add the value of Label1 and the string " test 1 : " and display it to the screen.
Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = Label1.Text & " test 1 : " End Sub
When testing in Internet Explorer 7.0, each time I hit the page, IE would close the browser and ask to send an error report. When I ran the code in FireFox, my label displayed this result:
Label test 1 : test 1 :
In other words, the code is hit twice, which may not only double your processing, but return unexpected results. So simply be aware of this possibility and avoid using
May your dreams be in ASP.net!