¿Y qué pone en su vista?Qué poner en su ViewModel
Un reciente blog de Scott Hanselman sobre el uso de un aglomerante especial modelo para la prueba más fácil me llevó a pensar en lo siguiente: ¿Qué te pone en su lógica del controlador construir el modelo de vista, y lo que se debe poner en el punto de vista? lo que hace es la siguiente:
var viewModel = new DinnerFormViewModel {
Dinner = dinner,
Countries = new SelectList(PhoneValidator.Countries, dinner.Country)
};
return View(viewModel);
Ahora, yo uso la misma manera de pasar datos a mi modo de ver, pero estoy seguro acerca de cómo se enfrenta a la propiedad países. Podría argumentar en ambos lados: Al empaquetar la lista de países en la Lista de selección, se preparan los datos para la vista, al igual que se crea un modelo de vista DTO para pasar sus datos. Por otro lado, de alguna manera se siente como si estuviera manipulando específicamente los datos que se utilizarán en una lista desplegable, lo que limita la forma en que la vista trata sus datos del controlador. Siento que este es un área un poco gris en la separación de preocupaciones entre la vista y el controlador, y realmente no puedo decidir qué camino tomar. ¿Hay alguna mejor práctica para esto?
PD: Para que quede simple, supongamos que el contexto ASP.NET MVC predeterminado, por lo tanto, básicamente su proyecto de fábrica. Motor de vista por defecto y todo ese jazz.
Sí, creo que tienes razón. SI habría necesidad de otra representación de la lista de países en la vista, básicamente crearías otra vista DTO para eso, ¿no? –
Probablemente. Aunque tal vez la lista de selección puede ser representada por una construcción de interfaz de usuario diferente, como tal vez una lista de casillas de verificación o algo así. Tal vez un método html helper diferente aún podría usar una SelectList y producir algo más. –
+1 El uso de modelos de vista de esta forma elimina aún más la lógica de la vista, lo cual siempre es deseable. –