No se permite volver a enviar la página.

Tengo un formulario web ASP.NET 4.0. Hay un cuadro de texto que quiero que los usuarios envíen y comprueben. Si es correcto, borro el cuadro de texto y no quiero que los usuarios puedan volver a enviar esos datos. En IE8, los usuarios pueden devolver la llamada (obtener una advertencia de reenvío) y, si se actualizan, volverán a enviar los datos desde ese cuadro de texto.

He intentado establecer el valor en nulo y deshabilitar viewstate para el cuadro de texto.

¿Cómo puedo dejar de volver a enviar?

Puede implementar el patrón de obtención de redirección posterior tal como se detalla aquí en Wikipedia para eliminar la actualización y el doble de devolución.

Si es absolutamente vital que las presentaciones nunca se procesen dos veces, combine todo lo anterior.

  1. Ponga un poco de javascript en el botón enviar para deshabilitarlo u ocultarlo, según el comentario de Andre
  2. Implemente Post / Redirect / Get según el enlace de Daz Lewis para asegurarse de que al actualizar el navegador no se vuelva a enviar el formulario
  3. Finalmente, agregue un campo oculto, una variable de sesión, etc., de acuerdo con la sugerencia de Matt Greer y Alison, así que si algo llega a su fin, por ejemplo, el tiempo de conexión entre la publicación y el redireccionamiento, y la actualización de los accesos del usuario en el navegador, no lo hace. Procese doble en su parte posterior.

No creo que con respecto al botón Atrás tenga otra opción que verificar el valor en el formulario enviado de nuevo, y determinar si es el formulario reenviado o no. Tiene otra opción que es después del envío redirigir a una página intermedia llamada test.aspx que redirige a su página de destino, por lo que en esta situación, el botón de retroceso no funcionará.

Puede publicar los datos del cuadro de texto usando AJAX, lo cual es mejor ya que no tendrá el botón “Atrás”.

Para cosas pequeñas (un campo, información pequeña) uso esta:

$.post("savedata.aspx", { name: "John", time: "2pm" } ); 

Echa un vistazo a los otros ejemplos , podría ser útil.

Solo recuerda hacer referencia a jQuery en tu proyecto.

Al enviar, puede guardar el hecho de que el formulario se ha enviado en una variable de sesión. Cuando se envía el formulario, primero prueba esta variable. Si la variable es verdadera (o lo que sea que usted establezca), no haga nada. El usuario puede actualizar y nada será reenviado.