2009-03-25 13 views
5

¿Me falta algo fundamental para los directores de MVC o me estoy volviendo loco?Uso de dos modelos fuertemente tipados para una vista MVC

Si tengo una vista que muestra una lista de libros y una lista de autores, tengo que crear una clase que tenga la lista de libros y la lista de autores como propiedades. ¿Derecha?

Escribo fuertemente la vista para usar esta clase.

Ahora quiero crear una nueva página con los mismos listados, pero eso también tiene una lista de promociones. ¿Debo crear otra clase con una lista de propiedad de Libros, una lista de autores y una lista de promociones?

Si estoy creando clases para todas las vistas, estoy creando muchísimo trabajo extra. ¿Se supone que debo crear parciales fuertemente tipados para cada uno de estos? ¿Qué pasa si el diseño difiere cada vez?

Actualmente tengo una clase BaseViewData que todas las vistas utilizan, ya que contiene algunas propiedades comunes. Sin embargo, ahora estoy luchando para obtener otros elementos sin hinchar completamente la clase BaseViewData.

Por favor alguien puede ayudarme a entender la teoría que todos los ejemplos simples no cubren.

Respuesta

3

uso el ViewData extension methods de MvcContrib que añadir soporte para múltiples fuertemente modelos a máquina (siempre que sean tipos diferentes). El código para añadirlos a la ViewData se ve así:

Código
User currentUser = GetCurrentUser(); 
List<Project> projectList = projectRepository.GetRecentProjects(currentUser); 
ViewData.Add(user); 
ViewData.Add(projectList); 

en la vista para sacarlos ve así:

User user = ViewData.Get<User>(); 
List<Project> projectList = ViewData.Get<List<Project>>(); 

Esto elimina tanto las "cuerdas mágicas" y el tipo de fundición. Tenga en cuenta que esto no hace nada con la propiedad del modelo de la vista.

+0

¿Se supone que debe escribir variables en la vista? Pensé que la vista se supone que es solo mostrar el código o simplemente soy demasiado pedante. –

0

Me encontré con el mismo problema. Creo que la solución general para la mayoría de las personas es crear una clase contenedora que contenga los modelos de Libros y Autores que realmente desea, y pasar ese contenedor a su Vista.

Subóptimo, sí, pero funciona. Esperemos que esto se aborde en futuras versiones del marco.

1

Crear una clase de contenedores para siempre objeto en el sistema, y ​​el uso de todos los puntos de vista - simples

objetos con valor nulo tienen ninguna sobrecarga verdadera

Cuestiones relacionadas