2010-09-21 34 views
6

Estoy desarrollando aplicaciones ASP.NET y tengo un "problema" relacionado con el comportamiento de reenvío. Estoy controlando la reenvío utilizando un contador en el evento de envío de formulario que deshabilita el envío si ya se ha publicado. Mi aplicación es un flujo de trabajo de 3 pasos y cuando se muestra el 3er paso, la transacción se envió del paso 2 al 3. ¿Cuál es mi problema? Bueno ... quiero evitar que el usuario vuelva a enviar los datos presionando F5 o cualquier otra posibilidad. No quiero deshabilitar la clave porque pueden ser soluciones. Me pregunto si puedo eliminar los datos de la publicación en un módulo HTTP que se ejecuta después de que se completó el proceso y justo antes de enviar la respuesta al usuario.Evitar formulario Volver a enviar

Respuesta

5

Puede utilizar Publicar/Redirigir/Obtener "patrón", donde cuando el usuario publica los datos, lo redirige (después de procesar los datos enviados) a otra página que responderá a obtener. Al igual que stackoverflow y otros sitios están haciendo.

Aquí está la página de Wikipedia que explica el Post/Redirect/Get Pattern.

+1

sí, si haces una redirección después del POST, entonces el cliente es redirigido a una página que es un GET, por lo que si pulsan actualizar, solo actualizará el GET. –

+1

El enlace está roto y no hay caché de google ni máquina de retorno para esa página. – daniloquio

2

Tal vez malentendí su pregunta/problema, pero parece que puede estar haciendo las cosas más difíciles de lo que deben ser. Si ya está realizando un seguimiento de si el formulario se ha enviado antes o no, ¿por qué no puede verificar ese indicador en el código antes de realizar la lógica que ejecuta en el envío? Si ya se ha enviado antes, solo ignore el evento de reenvío y quizás configure un mensaje de error.

Cuestiones relacionadas