Usando ASP.NET MVC hay situaciones (como el envío de formularios) que pueden requerir a RedirectToAction
.
Una de esas situaciones es cuando encuentra errores de validación después de enviar un formulario y necesita redirigir de nuevo al formulario, pero desea que la URL refleje la URL del formulario, no la página de acción a la que se envía.
Como necesito que el formulario contenga los POST
datos editados originalmente , para conveniencia del usuario, así como para fines de validación, ¿cómo puedo pasar los datos a través del RedirectToAction()
? Si uso el parámetro viewData, mis POST
parámetros se cambiarán a GET
parámetros.
c#
asp.net-mvc
Matt Mitchell
fuente
fuente
Respuestas:
La solución es utilizar la propiedad TempData para almacenar los componentes de solicitud deseados.
Por ejemplo:
Luego, en su acción "Formulario" puede ir:
fuente
Tenga en cuenta que TempData almacena la colección de formularios en sesión. Si no le gusta ese comportamiento, puede implementar la nueva interfaz ITempDataProvider y usar algún otro mecanismo para almacenar datos temporales. No haría eso a menos que sepa de hecho (a través de la medición y el perfil) que el uso del estado de sesión lo está perjudicando.
fuente
Echa un vistazo a MVCContrib , puedes hacer esto:
fuente
Hay otra forma de evitar tempdata. El patrón que me gusta implica crear 1 acción tanto para el renderizado original como para el renderizado inválido. Es algo parecido a esto:
Ese es el patrón más o menos. Un pequeño pseudoy. Con esto, puede crear 1 vista para manejar la representación del formulario, volver a mostrar los valores (ya que el formulario se completará con valores anteriores) y mostrar mensajes de error.
Cuando se publica en esta acción, si es válida, transfiere el control a otra acción.
Estoy tratando de facilitar este patrón en el marco de validación .net a medida que desarrollamos soporte para MVC.
fuente
Si desea pasar datos a la acción redirigida, el método que podría usar es:
fuente
TempData es la solución que mantiene los datos de acción en acción.
fuente