2008-11-25 24 views
29

Tengo una vista que contiene un formulario, las publicaciones de formularios y los datos se procesan, etc., luego deseo devolver el índice de vista, por lo que la vista regresa ("Índice");ASP.NET MVC devuelve una vista diferente

sin embargo, esto se va a quejar de que mi ViewData no existe, tengo la sensación de que el código del controlador bajo Index() no se procesa y agrega la lista que necesita a ViewData. ¿Alguien sabe qué pasa?

Gracias

edición: Al parecer se hace para evitar la repetición .. en cuyo caso, estoy perdido en cuanto a qué hacer sin repetir todos mis ViewData materia Ambos controladores

Respuesta

56

creo que debería tener dos acciones: una que procesa el envío del formulario y otra que recopila datos para la vista. Una vez que se haya procesado el formulario, llame al return RedirectToAction("Index") y listo. Espero haber entendido lo que quería decir con esto.

+4

+1 absolutamente el camino a seguir, lea http://en.wikipedia.org/wiki/Post/Redirect/Get para obtener más detalles sobre los beneficios de este enfoque. – dove

+4

¿Qué tal sin redirigir? return View ("Índice") – Luckyy

+0

@CodeClimber. Tengo un escenario similar. Tengo una vista parcial en la página de índice. Vista parcial envía el formulario. en los datos de envío de formularios se almacena en la base de datos. Quiero mostrar los últimos datos en la página del índice. cuando probé su enfoque, recibí este error "El elemento del modelo pasado al diccionario es del tipo 'System.Collections.Generic.List pero el diccionario requiere un elemento de modelo del tipo' UnderstandingPartialViews.Models.abc '" –

6

Si su método Index en el controlador hace un return View("Index");, simplemente llame al método Index con los parámetros que requiera. Luego, el método poblará los ViewData que haya sido reingresado por la Vista de índice.

Cuestiones relacionadas