Pregunta

Me encanta MVC, pero no puedo ver cómo está destinado a implementar los controles de los usuarios. Si tengo múltiples vistas, cada uno con detalles de la canasta de compras ¿Cómo puedo encapular la vista y el código de la cesta de compras para que no tenga que devolver los datos de la canasta con cada Data de vista del controlador?

¿Fue útil?

Solución

Debe devolver los datos de la canasta en cada acción del controlador que devuelva la vista que use el control del usuario de la canasta. Pero hay métodos para evitar la repetición del código aquí. Puede decorar el método de acción con ActionFilterAttribute personalizado que inyectará los datos apropiados en el evento OnexctionExecuted, o puede agregar datos de canasta al diccionario ViewData en el método de inicializar el controlador base y luego acceder a ellos en control con ViewData ["Magic-String"] o crear Método de extensión en htmlhelper para evitar cadenas mágicas.

Otros consejos

De este Página de MSDN:

Una vista parcial le permite definir una vista que se representará dentro de una vista de los padres. Las vistas parciales se implementan como controles de usuario ASP.NET (.ASCX).

Escriba su vista de carrito de compras en una vista parcial. Dentro de una página de visión, llamas Html.RenderPartial("PartialNameHere") Para renderizar esto a cualquier lugar de la página desde el que lo llamó. Al igual que las vistas, puede tener vistas parciales fuertemente tipo para que pueda pasar un modelo de cualquier tipo que elija.

Tenga en cuenta lo siguiente (también del enlace MSDN anterior; énfasis mío):

Cuando se instancia una vista parcial, obtiene su propio Copia del objeto ViewDatadictionary que está disponible para la vista principal. Por lo tanto, la vista parcial tiene acceso a los datos de la vista principal. Sin embargo, si la vista parcial actualiza los datos, esas actualizaciones afectan solo el objeto ViewData de la vista parcial. Los datos de la vista principal son no cambió.

Las otras respuestas son exactamente correctas, pero hay una segunda opción. Puede representar su visión parcial como resultado de una llamada AJAX a una acción del controlador dedicada a su vista parcial. De esa manera, su visión parcial solo tiene que lidiar con un modelo que tiene datos que solo se preocupan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top