Encontré un caso raro hoy. Hice un User Control (.ascx) y lo metí­ dentro de una página .aspx, y habí­a un evento que se disparaba dos veces.

Dentro del código ASP de un User control tení­a un formulario y al final un botón para enviarlo:

  1. <asp:ImageButton ID="Enviar" runat="server" BorderWidth="0px"
  2.    ImageUrl="../Images/BotonEnviarOff.jpg" onclick="Enviar_Click" />

En el code-behind de mi archivo .ascx tenía lo que regularmente se esperaría:

  1. Protected Sub Enviar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Enviar.Click
  2.      'Codigo aqui
  3. End Sub

Dentro de ese evento hací­a un enví­o de e-mail y guardaba un registro en una base de datos. Lo extraño es que cuando iba a revisar tení­a dos e-mails y habí­a dos registros en la base de datos.

Por alguna razón (un poco confusa para mí­ todaví­a) al establecer el evento que serí­a disparado en el evento click, es decir, el atributo onclick dentro del ImageButton éste se disparaba dos veces. Supongo que uno se disparaba por default y el otro por haber explí­citamente indicando el evento a ejecutarse.

La forma como lo solucioné fue eliminar ese atributo, de tal forma que mi botón quedara así:

  1. <asp:ImageButton ID="Enviar" runat="server" BorderWidth="0px"
  2.     ImageUrl="../Images/BotonEnviarOff.jpg"  />

Al parecer esto también tiene algo que ver con el atributo AutoEventWireup de la directiva Page o Control para el control de usuario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


4 − dos =