usando net mvc metodo llamar from examples example desde asp asp.net javascript asp.net-ajax

mvc - ASP.NET: Advertencia sobre las ventanas de cierre de datos modificados



llamar metodo c# desde jquery (6)

Me gustaría advertir a los usuarios cuando intenten cerrar una ventana del navegador si no guardaron los cambios que hicieron en el formulario web.

Estoy usando ASP.NET 3.5 (con ASP.NET Ajax).

¿Hay una solución común que podría implementar fácilmente?

EDITAR: tal vez mi pregunta no estaba clara: estoy buscando específicamente una forma que se integre con gracia en la metodología de los Controles del Servidor ASP.NET .



En el evento Page_Unload (o llame a esta función en su etiqueta de cuerpo, <body onunload="onPageUnload();"> ), puede verificar si el formulario contiene datos. Entonces podrías ejecutar algo de Java:

<script language="text/javascript"> function onPageUnload() { var oConfirm = window.confirm("You have unsaved form data, are you sure you want to close this window?"); if(oConfirm){ //Close }else{ //Dont } } </script>

Mira cómo funciona eso para ti

EDITAR: Puede que no impida el cierre de la ventana, pero alertará a su usuario de que tienen datos no guardados en su formulario.

Confirmado NO funciona entre navegadores, investigaré un método diferente y lo publicaré aquí.


Podría crear un control que extienda IExtenderProvider y que cree el JavaScript para rastrear los cambios (o más probablemente registre los controles con un mecanismo de seguimiento de cambios).

Sin embargo, todavía tendrá que implementar el seguimiento de cambios en Javascript, a menos que desee una gran cantidad de Postbacks.

Hice esto en un empleador anterior usando Prototype.Js . Creo que lo único difícil fue la diferencia entre la forma en que Internet Explorer y Firefox requieren que se establezca la bandera "cancelar navegación".


Simplemente agregue el evento window.onbeforeunload . Esto muestra una ventana modal donde puede decidir quedarse o abandonar la página.

window.onbeforeunload = function (event) { var message = ''All changes will get lost!''; if (typeof event == ''undefined'') { event = window.event; } if (event) { event.returnValue = message; } return message; }

Todos los navegadores proporcionarán un mensaje estándar ("¿Estás seguro de que quieres navegar desde esta página?") Además de tu mensaje personalizado.

Entonces la ventana se verá así:

--------------------------------- | Are you sure you want to | | navigate away from this page? | | | | All changes will get lost! | | | | [Cancel] [Ok] | ---------------------------------


como otros lo han mencionado, querrá mirar la ventana.descargar / antes de descargar los eventos. El problema con este evento es que se invoca siempre que la página está descargada. No solo cuando la ventana del navegador está cerrada, sino también cuando hace clic en un enlace dentro de la misma ventana del navegador para ir a una página diferente en el mismo sitio. Todavía puede hacer lo que quiere hacer, pero ayuda si puede anticipar este comportamiento.