LIMPIAR DATOS AL CERRAR EL NAVEGADOR DESDE ASPA

Limpiar datos al cerrar el navegador inesperadamente

Con este artículos vamos a realizar un proceso muy útil en asp.net. En muchas ocasiones trabajando con ASP.Net nos vemos en la necesidad de la creación de datos en sesión o el en ViewState , estos datos nos pueden genera problemas si el usuario no cierra correctamente el navegador al trabajar con ventanas modales. Un ejemplo de un mal funcionamiento es el caso en el cual creamos un formulario en forma modal en el cual realizamos una serie de operaciones que nos generan datos temporales en nuestra base de datos a falta de relacionarlas para que pasen de ser temporales en BD, puede darse el caso que el usuario genere estos datos en nuestra Base de datos, pero no finalice el proceso y no transacciones generando basura en nuestra base de datos e incluso datos no correctos.

La idea para solucionar este problema es el control de cierre de formulario por el aspa roja o el cierre de ventanas o actualizar con F5 etc... esto lo conseguimos con el evento window.onbeforeunload por medio de la siguiente función podemos lanzar una última llamada a nuestro servidor para controlar estos datos. Lo primero es crear un WebMethod en c#

[WebMethod]
        public static void metodoLimpiarDatos()
        {
           //Especificamos la lógica a implementar
        }

 

Lo segundo es crear la siguiente función en nuestra página aspx en javascript:

 <script type="text/javascript">
   
          window.onbeforeunload = function (e) {                 

PageMethods.metodoLimpiarDatos();
alert('Esta página le está pidiendo confirmar que quiere abandonarla - los datos que haya introducido podrían no guardarse.');   

    };

        
        </script>

 

Hay que tener en cuenta que deberemos controlar esta última función para que no salte siempre por ejemplo con una variable en javascript que identifica si queremos que salte (Esta variable la modificaremos para activarla o desactivarla en función de nuestras necesidades) quedando la función de esta forma:

<script type="text/javascript">
        var salir = false;
        function cambiarvalor()
        {
            salir = true;
        }
          window.onbeforeunload = function (e) {
          if(salir==false)
            {
         
                    PageMethods.metodoLimpiarDatos();
                    
                    alert('Esta página le está pidiendo confirmar que quiere abandonarla - los datos que haya introducido podrían no guardarse.');
                
         
            }
            };
        
        </script>

De esta forma tendremos un control completo de nuestros datos en las ventanas modales y podremos borrar datos de sesión almacenados, lanzar últimos postback a servidor etc...

 

 

Etiquetas
Limpiar datos al cerrar el navegador inesperadamente ASP.Net C# windows.onbeforeunload lanzar postback al cerrar navegador postback