Pregunta

A "Lookup" en este ejemplo es un IList<string> de abreviaturas del estado. En general, el modelo de dominio POCOs no incluirá estas opciones. ViewModels suelen tomar esta responsabilidad hace referencia tanto al modelo de dominio original, así como el objeto de búsqueda, pero lo que sucede cuando los modelos de dominio se anidan y está utilizando las plantillas de MVC (que no tendrán acceso a las propiedades de la raíz del modelo original?

¿Hay una manera de incluir las búsquedas en un objeto y el modelo en un objeto diferente de la plantilla? ¿Es permisible para montar sobre la marcha de un modelo de vista específica a la plantilla dentro de la vista (que tendría que incluir todos los datos anidados desde allí)? Yo creo que los métodos estáticos para tirar hacia abajo valores de búsqueda es mala.

¿Alguna idea?

Notes (que yo sepa):

Un modelo de dominio POCO de un repositorio no cambia en su estructura. Si necesita un único modelo de tener tanto el objeto al cliente y las opciones DDL para Estado de Estados Unidos, por ejemplo, que normalmente tienen un modelo de vista que hace referencia al objeto cliente y el cliente listas de búsqueda.

Sin embargo, cuando se tiene un modelo de dominio anidado (raíz agregada), los objetos anidados no tienen dónde poner las listas de consulta, y las plantillas MVC no pueden acceder al nivel de la raíz Ver Modelo (su modelo de vista es el modelo parcial).

Editar

¿Hay alguna manera de poner las listas de DDL en el nivel de la raíz del modelo de vista, y luego cuando llegue al objeto cliente, construir un nuevo modelo de vista que hace referencia a las listas de DDL de nivel de la raíz y el objeto al cliente actual para enviar a la plantilla ? Esto eliminaría la duplicación de datos en el modelo, así como utilizar un modelo único para todas las vistas. Lo único malo sería controlador como la recopilación de datos de código en la vista (que es igual de malo).

¿Fue útil?

Solución

Un par de sugerencias. En primer lugar, utilizar modelos de visualización distintos para sus puntos de vista - no utilizar directamente los modelos de dominio. Estos modelos de vista pueden, y deben, llevar a los datos adicionales que necesita la vista. En segundo lugar, puede utilizar las sobrecargas en DisplayFor / EditorFor para pasar los datos de visualización adicionales a la plantilla. De esa manera su plantilla puede ser específico para un modelo de dominio particular, y sin embargo, tener acceso a los datos adicionales en el modelo de vista.

Otros consejos

Para estática, listas inmutables como abreviaturas de los estados, usted podría utilizar el estado de la aplicación o la entrada de caché. Estos tipos de listas podrían ser cargados en Application_Start a partir de una base de datos.

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