Boletín mugperu Digital - Julio 2009!
  Search 
Saturday, May 19, 2012 ..:: Foros de Discusión ::.. Register  Login
Foros MUGPERU Minimize
Subject: ayuda conmessagebox en asp.net de c#
Prev Next
You are not authorized to post a reply.

Author Messages
henrymugidat
Posts:2

28/05/2005 06:51 PM  
hola , mi problema es que estoy trabajando con .NET con aplicacion asp.net en c# y quiero QUE ME SALGA mensaje.  estaba trabajando con customvalidator y
puse algunos codigos en el  customvalidator  quiero que me salga en el ValidationSummary el mensaje que siempre sale  ya lo relacione en el control to validation
Buneo me salia  esto  (¿falta una directiva using o una referencia de ensamblado?)
eso lo arregle con una referencia "using System.Windows.Forms;"
PERO AHORA SALE ESTO  : ESPERO QUE ME PUEDAN AYUDAR

Error de servidor en la aplicación '/WebAValidacion'.

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.

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: 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.

Error de código fuente:

<PRE>L&#237;nea 83:             else
L&#237;nea 84:             {
<FONT color=red>L&#237;nea 85:                 MessageBox.Show("pag invalida");
</FONT>L&#237;nea 86:                 
L&#237;nea 87:                 </PRE>

Archivo de origen: e:\inetpub\wwwroot\webavalidacion\numerospares.aspx.cs    Línea: 85

Seguimiento de la pila:

<PRE>[InvalidOperationException: No se puede mostrar un cuadro de di&#225;logo o formulario modal cuando la aplicaci&#243;n no est&#225; en modo UserInteractive. Especifique el estilo ServiceNotification o DefaultDesktopOnly para mostrar una notificaci&#243;n de una aplicaci&#243;n de servicio.]
   System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options)
   System.Windows.Forms.MessageBox.Show(String text)
   WebAValidacion.NumerosPares.CustomValidator2_ServerValidate(Object source, ServerValidateEventArgs args) in e:\inetpub\wwwroot\webavalidacion\numerospares.aspx.cs:85
   System.Web.UI.WebControls.CustomValidator.OnServerValidate(String value)
   System.Web.UI.WebControls.CustomValidator.EvaluateIsValid()
   System.Web.UI.WebControls.BaseValidator.Validate()
   System.Web.UI.Page.Validate()
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()
</PRE>


Información de versión: Versión de Microsoft .NET Framework:1.1.4322.573; Versión de ASP.NET:1.1.4322.573
YOJAN
Posts:27

29/05/2005 09:56 AM  

Uhmmm no te la capto, MessageBox.Show("vvvvv")

en asp net ?¿

Si kieres un mensaje puedes usar: Response.Write("")

Salu2s

Yojan

 

micronet_peru
Posts:16

30/05/2005 07:16 AM  

no puedes utilizar un messagebox ya eso se utiliza solo en aplicaciones de Consola Windows

lo k podrias hacer es crear una pagina de control y muestra de errores pero debe ser de tipo ASPX

richie_crazy57
Posts:203

30/05/2005 10:59 AM  

Hola, Henry:

El mensaje que te muestra el motor de ASP .NET es muy simple: el modo en el cual estás accesando al servidor no es UserInteractive, esto es, no tienes interacción directa con el servidor, sino más bien con sus servicios (ASP .NET e IIS). Tal como dice el mensaje que te da la aplicación, podrías optar por asignarle al mensaje la opción ServiceNotification, como se muestra a continuación:

MessageBox.Show("pag invalida", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);

Sin embargo, eso no haría más que mostrar el mensaje en la máquina servidor de tu aplicación, pero como ya dije, los usuarios de una aplicación Web no interactúan directamente con el servidor web.

La solución a tu problemita está en esta clase que te presento a continuación

using System;

using System.Web.UI;

using System.Web;

using System.Text;

using System.Collections;

&t;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> 

namespace LeeGunn.Web.UI.MessageBox

{

      /// <summary>

      /// Descripción de resumen para la clase MessageBox.

      /// </summary>

      public class MessageBox

      {

            private static Hashtable mpaginasEnEjecucion = new Hashtable();

 

            /// <summary>

            /// Constructor vacío.

            /// </summary>

            private MessageBox(){}

 

            public static void Show( string Mensaje )

            {

                  // Si es la primera vez que una página llama a este método.

                  if( !m_paginasEnEjecucion.Contains( HttpContext.Current.Handler ) )

                  {

                        // Trata de castear el HttpHandler como Page.

                        Page executingPage = HttpContext.Current.Handler aslt;/SPAN> Page;

 

                        if( executingPage != null )

                        {

                              // Se crea una cola para almacenar uno o más mensajes.

                              Queue colaMensajes = new Queue();

 

             &bsp;                // Se agrega nuestro mensaje a la cola.

                              colaMensajes.Enqueue( Mensaje );

       

                              // Se agrega nuestra cola de mensajes a la tabla hash. Se utiliza nuestra referencia page

                              // (IHttpHandler) como llave para la tabla hash.

                              m_paginasEnEjecucion.Add( HttpContext.Current.Handler, colaMensajes );

 

                              // Se asocia el evento Unload para poder inyectar el código JavaScript para las alertas.

                              executingPage.Unload += new EventHandler( PaginaEnEjecucion_Unload );

                        }  

                  }

                  else

                  {<:p>

                        // Si el método ha sido llamado antes por la página.

                        // ya tenemos nuestra cola de mensajes y su referencia en nuestra tabla hash.

                        Queue cola = (Queue) m_paginasEnEjecucion[ HttpContext.Current.Handler ]

       

                        // Se agrega nuestro mensaje a la cola.

                        cola.Enqueue( Mensaje );

                  }

            }

 

 

            // Cuando nuestra página ha terminado de renderizar el código se agrega el código JavaScript para producir las alertas.

            private static void PaginaEnEjecucion_Unload(object sender, EventArgs e)

            {

                  // Se obtiene nuestra cola de mensajes desde la tabla hash.

                  Queue cola = (Queue) m_paginasEnEjecucion[ HttpContext.Current.Handler ]

       

                  if( cola != null )

                  {

                        StringBuilder sb = new StringBuilder();

 

                        // Cantidad de mensajes registrados en la col.

                        int iMsgCount = cola.Count;

 

                        // Se utiliza al StringBuilder para crear el código JavaScript del cliente..

                        sb.Append( "<script language='javascript'>" );

 

                        // Se itera en los mensajes de la cola.

                        string sMsg;

                        while( iMsgCount-- > 0 )

                        {

                              sMsg = (string) cola.Dequeue();

                              sMsg = sMsg.Replace( "\n", "\\n" );

       amp;nbsp;                      sMsg = sMsg.Replace( "\"", "'" );

                              sb.Append( @"alert( """ + sMsg + @""" );" );

                        }

 

                        // Se cierra la sección de código JavaScript.

                        sb.Append( @"</script>" );

 

                        // Una vez agregado el código JS se quita la asociación del evento Unload a este método

                        m_paginasEnEjecucion.Remove( HttpContext.Current.Handler );

 

                        // Se escribe el código JavaScript al final del stream de respuesta.

                        HttpContext.Current.Response.Write( sb.ToString() );

                  }

            }&l;/P>

      }

}

Como puedes ver, la solución es simple (y a veces, tan obvia que no la podemos ver): JavaScript. La función alert() de JS nos permite mostrar mensajes. Esta clase simplemente enmascara el proceso de generación del código JS necesario para mostrar tus mensajes.

Además, la implementación de las colas, te permite mostrar más de un mensaje (uno después de otro, obviamente).

Espero que te sirva de ayuda. Por lo pronto no me lo agradezcas a mí. Esta es simplemente mi traducción de la clase implementada por Lee Gunn (como puedes apreciar por el nombre del Namespace de la clase) en su artículo Simple MessageBox functionality in ASP .NET en CodeProject. Realmente les recomiendo esta comunidad que día a día expone gran cantidad de código muy útil para diversos propósitos.

Hasta la próxima. Bye.

Я!©ђ!Є ©Я∆ZΨ

 

 

 

Atilin
Posts:13

02/06/2005 01:27 PM  
Hermano .. de verdad en la otra comunidad ya te he dicho que no puedes poner un MessageBox.show en las ASP.NET , ahi debes de utilizar java script apra eso o hay un control no me aceurdo muy bien como se llama pero chekea www.asp.net
micronet_peru
Posts:16

03/06/2005 07:52 AM  
Richy tu codigo es correcto pero lo k nuestro amiwo HENRI esta intentando hacer es ejecutar el  System.Windows.Forms.Messagebox.Show("comentario") esto no lo va a poder hacer porque es solo para clientes windows que utilizan Framework.NET, lo que nuestro amigo Henri podria hacer es cambiar su codigo para implementar el k tu le brindaste ...... chevere con el codigo y el link k pasaste ... !!!  :-)
You are not authorized to post a reply.



ActiveForums 3.7
        
Copyright 2001-2012 MUGPERU   Terms Of Use  Privacy Statement