viernes, 16 de diciembre de 2011

MessageBox.Show en ASP.NET

 Tengo el siguiente error:


Exception Details: System.InvalidOperationException: No se puede mostrar un cuadro de diálogo o formulario modal cuando la aplicación no está en modo UserInteractive. Especifique el estilo ServiceNotification o DefaultDesktopOnly para mostrar una notificación de una aplicación de servicio.

En la siguiente línea de código:

   DialogResult result = MessageBox.Show("¿Desea borrar el perfil 
seleccionado?", 
"Confirmación", MessageBoxButtons.YesNo);
 
Según he leido viene dado porque los messagebox no se pueden poner en una 
aplicación web por el tema del cliente y el servidor.
 
Después de darle muchas vueltas he llegado a una solución bastante 
sencilla.
 
Lo he encontrado en esta dirección.
 
Al parecer existe para los botones una opción que es la de OnClientClick
que ejecuta
si está en el servidor.
 
<asp:Button ID="Button1" runat="server" 
OnClientClick="return confirm('Are you sure you want to delete?');"
                onclick="Button1_Click" Text="Delete" /> 

Con este elemento podemos decir que primero muestre una ventana de
 confirmación y si
es true, entra en Button1_Click, y si es false no hace nada

Espero que a alguie le sea de ayuda ya que me ha costado bastante
 encontrar esta
solución.
 
 
También lo he encontrado para este tipo de botón:
 
<dx:ASPxButton ID="ASPxButtonBorrar" runat="server" style="margin-left:0px" 
onclick="ASPxButtonBorrar_Click" Visible="true"  >
 
<Image Url="~/iconos/borrar.png" Height="30px" Width="70px">
</Image>
<Border BorderColor="White" BorderStyle="Outset" BorderWidth="5px" />
<ClientSideEvents Click="function(s,e){e.processOnServer = confirm('¿Está
seguro de borrar el registro?');}" />
</dx:ASPxButton> 

2 comentarios: