reenvio recargue quitar que formulario evitar envio doble como actualizar c# asp.net browser webforms

c# - recargue - evitar reenvio de formulario al actualizar jquery



Evitar el reenvío de formularios web en la actualización del navegador sin perder viewstate (3)

redirigir después de la publicación

Duplicado: ¿Cómo puedo evitar que se vuelva a escribir la base de datos cuando el navegador realiza una recarga / retroceso?

¿Hay alguna forma elegante y agradable de evitar que una página .aspx vuelva a enviar los datos del formulario si el usuario solicita una actualización desde su navegador?

Idealmente, sin perder el estado de vista.

EDITAR: La solución más elegante para mí resultó ser envolver los controles relevantes en un asp.net ajax UpdatePanel. Ta everyone.


No hay una manera elegante, pero hay opciones. Como se indica en una de las otras respuestas, puede hacer una respuesta de redireccionamiento HTTP. Otra solución es enviarla a través de medios como Ajax o mediante un iframe.


Genere e inserte un identificador único en la página que también está almacenada en el servidor. Almacene eso cuando se envíe el formulario y no permita que se pase ese valor varias veces.

ACTUALIZAR : esta es la única forma "adecuada" de hacer esto. Cuando digo esto, me refiero a almacenar algo del lado del servidor. Cualquier cosa basada en el comportamiento del cliente es potencialmente fallar. Esas implementaciones no se refieren a posibles errores del navegador, incompatibilidades, javascript deshabilitado, tiempos de espera de conexión, etc.

Algo del lado del servidor necesita saber que esta acción en particular ya se ha realizado y detenerla en el lado del servidor. Insisto en esto, porque a menudo esto se debe hacer para evitar que un cliente se refresque y haga pedidos múltiples (y potencialmente múltiples). Esto también permite que el cliente actualice correctamente si la acción no ha sido realmente recibida y el servidor la ha actuado (por ejemplo, en el caso de un tiempo de espera excedido).