Evento Load de Página ASPX Solo se Ejecuta la Primera Vez, Cuando se Abre la Página con JavaScript en Modo Modal.

Nuevamente uno de esos problemas que a uno lo ponen a pensar, y como ya es costumbre proviene de una amiga (que bueno que me hagan estas consultas, así tengo material para el Blog).

El Problema
Cuando abrimos una página ASP .Net en modo modal (diálogo), mediante la instrucción de JavaScript:

showModalDialog();

El código que ponemos en el controlador del evento load de la página que estamos abriendo, se ejecuta solo la primera vez que abrimos la página; en las siguientes veces, simplemente no ejecuta nada, es decir no se produce el evento load de la página.

La Solución
Como es costumbre lo primero que hice, fue reproducir el problema, y me pareció bastante extraño el comportamiento que tenía, luego pase a depurar el programa poniendo un punto de interrupción en la primera instrucción del controlador del evento Load de la página, ejecute el programa y como se esperaba se detuvo en el punto de interrupción, desde ahí comencé a ejecutarlo paso a paso presionando la tecla F10, hasta que se muestre la página por completo, luego cerré la página para abrirla de nuevo, y al abrir de nuevo la página, ¡o sorpresa!, ingresó nuevamente al controlador del evento Load donde estaba el punto de interrupción, y donde se suponía ya no debería de entrar. Así que detuve el proceso de depuración, ejecuté el programa y todo funcionó a la perfección.

Le comenté esto a mi amiga y le dije que después de depurar el programa, todo funcionaba a la perfección, pero ella no puedo reproducir lo que yo había logrado. Rato después cuando probé nuevamente el programa, surgió nuevamente el problema y como era de esperar, mi amiga se rió en mi cara.

Así que me puse a buscar la solución definitiva, luego de probar con muchas posibles soluciones y claro después de buscar en San Google, recordé que cuando una página es servida desde la caché de salida, no se ejecuta ningún código del lado del servidor. Así que procedí a desactivar la caché de salida de la página en cuestión, y que creen, eso solucionó el problema definitivamente, resulta que en las páginas que se muestran como diálogo (Modal), la caché de salida se activa de forma automática y claro no hay manera que se ejecute nuestro controlador de evento Load. Para desactivar la caché de salida de una página basta con colocar la siguiente declaración en el archivo apsx de la página:

<%@ OutputCache Location=”None” VaryByParam=”None” %>

Justo después de la directiva @Page.

6 comments so far

  1. francisco on

    excelente articulo, de hecho ya me habia pasado y me dejo siempre con dudas.

    saludos

  2. Marcelo Magaña on

    Muchisimas gracias, realmente un excelente artículo, no te imaginas cuanto tiempo me pasé buscando una solución, ni siquiera MSDN me ha solucionado el problema..

    Muchas Gracias.

  3. JuancitoPinto on

    Amigo mio te comento que a mi ni poniendo , no me funciona, a mi parecer es ppor que Microsoft lanzo una actualizacion y quito la funcionalidad, tengo este problema desde el mes de Agosto mas o menos, recien pude percatarme de que no esta funcionando estas opciones de desabilitar el cacheo, y ahora tengo el problema de que no se estan actualizando mis paginas que funcionan con shomodaldialog

  4. erick on

    muchas gracias me sirvio de maravilla

  5. Sergio on

    A mi me pasa eso no ejecuta los eventos pro no en una pagina modal sino de ninguna pagina de todo el proyecto, de Visual Studio

  6. ocacorral on

    Nno sabes del problema del que me sacaste, tenia exactamente el mismo problema que tu, muchas gracias


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: