2011-04-02 54 views

Respuesta

19

return View() dice MVC para generar HTML que se muestra y lo envía al navegador.

RedirectToAction() dice ASP.NET MVC para responder con un redireccionamiento del navegador a una acción diferente en lugar de representación HTML. El navegador recibirá la notificación de redireccionamiento y realizará otra solicitud para la nueva acción.

Un ejemplo ...

digamos que usted está construyendo una forma de recoger y guardar los datos, su URL se parece a SomeEntity/Edit/23. En la acción Editar, hará return View() para representar un formulario con campos de entrada para recopilar los datos.

Para este ejemplo, digamos que al guardar con éxito los datos, desea mostrar los datos que se han guardado. Después de procesar los datos enviados por el usuario, haga algo como RedirectToAction("Index"), donde Index es la acción que mostrará los datos. El navegador obtendrá un HTTP 302 (redirección temporal) para ir al /SomeEntity/Index/23.

+1

RedirectToAction también se utiliza para implementar el patrón PRG – Tassadaque

9
  1. Volver View no hace nuevas solicitudes, sólo se representa la vista sin cambiar las direcciones URL en la barra de direcciones del navegador.
  2. Volver RedirectToAction hace una nueva solicitud y la dirección URL en la barra de de direcciones del navegador se actualiza con la URL generada por MVC.
  3. Devolución Redirect también realiza una nueva solicitud y la URL en la barra de la dirección del navegador se actualiza, pero debe especificar la URL completa.
  4. RedirectToRoute redirige a la ruta especificada, definida en el la tabla ruta.

Entre RedirectToAction y Redirect, la mejor práctica es utilizar RedirectToAction para cualquier cosa relacionada con su solicitud acciones/controladores. Si usa Redirect y proporciona la URL, deberá modificar esas URL manualmente cuando cambie la tabla de rutas.

0

Como una adición a todas las respuestas anteriores, si está utilizando la implementación de validación utilizando la anotación de datos, use return View() en lugar de RedirectToAction().

mensaje de validación no funcionará usando RedirectToAction ya que no consigue el modelo que no es válido y el mensaje de validación no se mostrará tan bien en su punto de vista.

Cuestiones relacionadas