Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarMsgBox en ASP.NET

Autor: S3rGy0 | Archivado en: ASP, Microsoft el día 14/Sep/2004

Este es un pequeño truco para poder mostrar lo que sería el equivalente del MsgBox de Visual Basic en una página ASP.NET. Quizá esto lo sepáis ya más de uno pero para el que esté empezando con ASP.NET le va a resultar muy útil.

Por defecto no se puede poner en el código servidor una sentencia como esta: MsgBox(”Hola Mundo”) ya que esto se va a ejecutar en parte servidora y el resultado va al servidor y no al cliente que es el que debería de verlo. La única manera de mostrar este tipo de mensajes es con la función alert de javascript.

Para ello debemos crear un input oculto al que se tenga acceso a la parte servidora, por ejemplo así:

<input id=”txtMensajes” runat=”server” style=”DISPLAY:none; WIDTH: 10px”>

El estilo con width a 10 pixels es sólo una cuestión estética, porque si tenéis 10 textbox ocultos ocupan mucho espacio en el diseñador.

En este textbox oculto es donde vamos a almacenar los mensajes que queramos mostrar. El funcionamiento será el siguiente: En este textbox ponemos el mensaje que queramos mostrar y cuando el servidor devuelva el resultado al cliente éste se recargará y, mediante un evento onload, utilizaremos una función para mostrar el contenido del textbox. Para ello escribiremos en la cabecera de la página html:

function mostrarMensaje()
{
if(document.getElementById(”txtMensajes”).value != “”)
{
alert(document.getElementById(”txtMensajes”).value);
document.getElementById(”txtMensajes”).value=”";
}
}
Notad que después de mostrar el mensaje se inicializa el textbox a cadena vacía. Si no hiciéramos esto se mostraría el mensaje cada vez que se recargue la página.

Por último tenemos que llamar a la función desde el evento onload del documento:

<body onload=”mostrarMensaje();”>

Ahora nos vamos al código servidor y si, por ejemplo, en una parte del código se puede producir un error, pondremos:

txtMensaje.value=”Error de la muerte”

Ventajas de este truquito: Si necesitamos ir concatenando mensajes de error lo podemos hacer fácilmente almacenando la cadena concatenada en el textbox, al igual que se puede hacer en Win32.

Inconvenientes: Hay que esperar a que se ejecute el código servidor para que aparezca el mensaje, por lo tanto es poco recomendable para líneas de bajo ancho de banda.

Salu2.


  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

8 Comentarios on “MsgBox en ASP.NET”

  1. #1 ToRTu_HaCKeR dijo 10:57 pm el Agosto 25th, 2005:

    Funciona de 10, solo tienes que corregir el codigo de la funcion, el la primer linea (en el IF) donde pregunta por (.Value != “”) hay un caracter no valido.
    Hasta que me di cuenta estube un rato. =P, GRACIAS KPO !!!


  2. #2 ToRTu_HaCKeR dijo 10:59 pm el Agosto 25th, 2005:

    acabo de darme cuenta que hasta este ABM de comentarios no me deja poner 2 comillas dobles, la primer comilla te la convierte en un caracter extraño. =S


  3. #3 S3rGy0 dijo 9:56 am el Agosto 26th, 2005:

    Pues la verdad es que no sabía que salía ningún caracter extraño.

    Me alegro que te haya resultado útil.

    Saludos.


  4. #4 Michael Cofre dijo 6:38 pm el Septiembre 28th, 2005:

    http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art120.asp

    este es una buena forma de crear un msgbox, y tiene mas utilidades que el que aqui explican, incluso se programa una ves y despues se maneja como objeto. sencillo. :-)


  5. #5 S3rGy0 dijo 10:30 am el Septiembre 29th, 2005:

    Sip, ya lo había visto incluso antes de hacerlo de esta manera, lo malo es que había veces que me daba problemas, sobre todo si tenía una página muy cargada. Como no me terminaba de convencer, probé a hacerlo así y desde entonces, para mi al menos, me es más comodo y sobre todo más legible hacerlo como lo explico arriba. Supongo que es cuestión de gustos.

    Salu2.


  6. #6 Grecuss dijo 9:26 pm el Octubre 21st, 2005:

    Yo manejo controles de usuario y no me funciona, tengo una sola pagina aspx con un panel y este adiciono los controles, asi que uso un solo formulario y no me funciona este método, me apace una excepción de valores nulos para el input cuando le asigno el texto del mensaje, el script está el en la pagina principal y el input en el control de servidor (Por cierto yo uso C#, al parecer aqui usan vb.net, pero eso no creo que sea problema )


  7. #7 S3rGy0 dijo 11:49 am el Octubre 26th, 2005:

    Hombre, no creo que tenga nada que ver el lenguaje que uses, porque yo me estoy aficionando ahora al C# y no he tenido este tipo de problemas, aunque también es verdad que aún no he probado a hacer el msgbox en concreto.

    No entiendo muy bien a qué te refieres: ¿estás tratando de hacer un control de usuario que muestre un msgbox con este truco ó simplemente no te sale?

    El concepto es muy sencillo: creas un textbox oculto, donde introducirás el mensaje a mostrar; creas una función jscript que muestre el contenido del textbox si éste es distinto de “” y colocas esta función en el evento onload del body. Cada vez que quieras que se devuelva un error desde el servidor sólo hay que asignarle un valor al textbox con el mensaje que quieras.

    Si me especificas algo más trataré de ayudarte. Si quieres mandame tu problema, con un ejemplo del código que usas a mi correo e intentaré ayudarte: salmenara@gmail.com.

    Salu2.


  8. #8 Ana Ochoa dijo 8:50 pm el Junio 13th, 2006:

    Es buena idea, que tal les parece esta:
    Response.Write(”“), para cuando capturan una excepcion o solo mostrar un mensaje:
    Response.Write(”“)
    solo se inserta en el momento en que se necesite.



Deja un comentario.