2011-04-25 17 views
16

Este existing question resume los aspectos básicos de mi pregunta. Las mejores respuestas allí dicen la diferencia entre los dos métodos. Estoy buscando pautas sobre qué método usar.Cuándo utiliza Ver() frente a RedirectToAction

En resumen, tengo una acción en un controlador que procesa un formulario y luego muestra los resultados del proceso. ¿Cuándo debo usar return View() en comparación con return RedirectToAction("FormResult")?

Respuesta

8

Realmente puede usar cualquiera. En términos generales, sin embargo, después de que se publique un formulario, usted desea redirigirlo para que al actualizar la página no se vuelva a publicar el formulario. A veces, sin embargo, no es factible copiar el estado a la nueva página y su procesamiento es idempotente, por lo que la actualización no dañaría nada.

No es que haya una regla difícil. Tienes que sopesar los pros y los contras.

18

Me atrevo a decir que hay una regla difícil (y tanto como puede haber) - el Post/Redirect/Get (PRG) pattern. El estándar con MVC (y los helpers html realmente esperan que use este patrón) es:

  1. publique sus datos.
  2. Si hay un error (es decir, ModelState.IsValid=false) entonces return View() de lo contrario return RedirectResult.

Si hubo un error de los ayudantes del HTML realidad se verá en los valores publicados para volver a mostrar a diferencia de lo que pasa por ellos View(model) - de nuevo debido a que el patrón de PRG se 'supone' que lo que sucedió.

+0

¡Respuesta excelente! 'RedirectResult' requiere' return new RedirectResult ("url") 'aunque probablemente algo como' return RedirectToAction ("Index") 'es más fácil y más limpio. – SharpC

4
  1. Regresar ver no hace nuevas solicitudes, sólo se representa la vista
  2. sin cambiar las direcciones URL en la barra de direcciones del navegador. Devuelva
    RedirectToAction realiza nuevas solicitudes y la URL en la barra de direcciones del navegador se actualiza con la URL generada por MVC.
  3. Retorno de redireccionamiento también hace una nueva solicitud y URL en la dirección del navegador barra se actualiza, pero hay que especificar la URL completa para redirigir
  4. Entre RedirectToAction y redirección, la mejor práctica es utilizar RedirectToAction para cualquier cosa relacionada con su aplicación acciones/controladores. Si usa Redirigir y proporciona la URL, necesitará modificar esas URL manualmente cuando cambie la tabla de rutas.
  5. RedirectToRoute redirige a la ruta especificada en la tabla de rutas .
Cuestiones relacionadas