2010-04-21 26 views
42

¿Cómo puedo realizar una redirección con Server.Transfer() a la misma página que se muestra actualmente?redirigir a la página actual en ASP.Net

Quiero tener un formulario despejado después de la presentación.

¿Qué otros/mejores métodos puedo usar para lograr lo mismo?

+1

Si solo desea borrar el formulario después de enviarlo, simplemente borre todos los valores de campo en el código ur último, en lugar de redirigirlo a la misma página –

Respuesta

96

¿Por qué Server.Transfer? Response.Redirect(Request.RawUrl) obtendría lo que necesita.

+0

Creo que Server.Transfer es la mejor opción. Pero tu solución también funciona. Estoy usando ahora Server.Transfer (Request.Path); – Fabiano

+11

@Daniel: No es un viaje redondo perdido. Muy a menudo no desea que la última solicitud en la pila de páginas de los navegadores de su usuario sea el resultado de un HTTP POST. Los usuarios a menudo actualizarán y repetirán esa acción. La transferencia no soluciona eso, pero Redirect sí. – kervin

+6

@Daniel: ¿Alguna vez se ha oído hablar del patrón Post-Redirect-Get? Si no, aquí hay información para ti: http://en.wikipedia.org/wiki/Post/Redirect/Get – epitka

15

http://en.wikipedia.org/wiki/Post/Redirect/Get

La forma más común de implementar este patrón en ASP.Net es utilizar Response.Redirect (Request.RawUrl)

Considere el differences between Redirect and Transfer. La transferencia realmente no le dice al navegador reenviar a un formulario claro, simplemente está devolviendo un formulario despejado. Eso puede o no ser lo que quieres.

Response.Redirect() no es un desperdicio ida y vuelta. Si publica en un script que borra el formulario Server.Transfer() y lo vuelve a cargar, la mayoría de los navegadores le pedirán que vuelva a publicar ya que la última acción fue un HTTP POST. Esto puede provocar que los usuarios repitan involuntariamente alguna acción, ej. coloque un segundo pedido que deberá anularse más tarde.

Cuestiones relacionadas