Patrón Post-Redirect-Get

Podríamos decir que la base de cualquier aplicación web realizada en ASP.NET MVC son las diferentes acciones definidas en los controladores. La comunicación o flujo entre estas acciones determinará el flujo que tendrá la aplicación (generalmente siguiendo algún flujo de procesos de negocio)

Algo que debemos tener en cuenta cuando aplicamos este flujo como desarrolladores web es el patrón Post-Redirect-Get, lo cual nos permite evitar el siguiente problema:

  1. El usuario realiza un Post HTTP sobre un formulario en una página de nuestra aplicación
  2. La acción correspondiente en el controlador realiza alguna operación con la información (como guardar el contenido), y retorna otra vista (supongamos el detalle de lo que se guardó)
  3. El usuario presiona F5 en la página de detalle. El navegador le indica que se enviará información que ya se ha enviado (en definitiva, que se quiere hacer nuevamente otro Post HTTP con los mismos datos)

Aquí el error está en lo que se retorna en el punto número 2. En vez de retornar una vista, lo que se debe hacer es retornar un Redirect o alguna de sus variantes (RedirectToAction o RedirectToRoute). Esto hará que al redirigir a la acción solicitada se realiza un nuevo Get HTTP sobre la misma, previa ejecución de un Redirect HTTP.

Les recomiendo la lectura del post de mi amigo Sebastián Henzenn, el cual explica muy bien este patrón.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s