2010-09-06 31 views
5

Me pregunto cómo puedo crear un modelo de vista correctamente.Mejores prácticas con ASP.NET MVC ven modelos

Por ejemplo, tengo una vista de edición con algunos cuadros de texto y una lista desplegable.

¿Debo separar la lista desplegable en un nuevo modelo de vista o para que la vista de edición tenga un modelo de vista con una lista para la lista desplegable?

O, en términos generales, ¿debo separar campos de entrada especiales en modelos de vista separados?

¿Cuándo debe una vista tener más de un modelo de vista y cuándo no?

Respuesta

6

No existe una regla clara sobre cómo crear y organizar correctamente sus modelos de vista. Su pregunta es demasiado vaga para ser respondida porque proporcionó muy poco contexto.

Por lo general, grupo de vista de modelos según bloques funcionales/partes de la pantalla que representan. Por ejemplo, imagine que tiene una forma compleja compuesta de múltiples secciones/conjuntos de campo como detalles de contacto, dirección de entrega, información de facturación, etc. Una dirección podría estar compuesta por el menú desplegable calle, postal, ciudad y país. Crearía un modelo de vista de direcciones que contenga esas cuatro propiedades para que se pueda reutilizar en vistas múltiples/vistas parciales. Esto también facilitará la validación ya que las propiedades dependientes se empaquetarán en el mismo modelo de vista, como validar, por ejemplo, que el zip dado corresponde a la ciudad y que la ciudad pertenece al país seleccionado.

Por ejemplo, tengo una vista de edición con algunos cuadros de texto y una lista desplegable.

¿Debo separar la lista desplegable en un nuevo modelo de vista o SHAUD la vista de edición tener un modelo de vista con una lista de la lista desplegable?

Yo diría que no, si esos campos están de alguna manera relacionados funcionalmente.

Conclusión: deberá encontrar el equilibrio correcto entre tener un modelo de vista por campo en la pantalla y tener un modelo de vista única por aplicación.

+0

En cuanto a la creación de submodelos de vista reutilizables, ¿qué pasaría si modificara su modelo de vista de dirección porque necesitara modificarlo para una sola vista específica? El cambio afectará otras vistas que usan el modelo de vista de dirección aunque haya sangrado para cambiar solo una vista ? – BornToCode

0

Debe separar la lista desplegable en el nuevo modelo de vista si desea ser reutilizable.

0

En general, querrá utilizar el patrón de ViewModel si desea almacenar los datos utilizados por la vista escrita. Para lógica y detalles específicos de UI, un patrón ViewHelper sería más adecuado.

Para obtener más información sobre ViewModel, consulte este artículo. http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/

+0

He echado un vistazo al artículo y me pregunto por qué hay un directorio de modelos y un directorio de ViewModel. El directorio del modelo es para los modelos de vista. El directorio del modelo mencionado se parece al modelo de dominio/modelo de objetos. Entonces, lo que hicieron fue crear un modelo de vista que consta de dos objetos de dominio. – Rookian

+0

@Rookian. Sí, estás en lo correcto. ViewModel es para ViewModels mientras que Model es para modelos de dominio/negocios. –

1

Prefiero el enfoque de un modelo de vista por vista/parcial. En mi opinión, este es el mejor enfoque si crees que el único propósito del modelo de vista debería ser modelar la vista. Este paradigma también admite el uso de vistas fuertemente tipadas, lo que proporciona una verificación de errores en tiempo de compilación para su enlace de modelo de vistas y obtiene el beneficio adicional de intellisense. En los escenarios en los que desea volver a utilizar un poco de lógica, creo que a menudo se puede satisfacer redefiniendo la vista en vistas parciales y proporcionando estos parciales con sus propios modelos de vista. Debe enfatizarse que no debe existir lógica de dominio en sus modelos de vista, ya que realmente pertenece a un modelo de dominio.

Cuestiones relacionadas