Me preguntaba cuál es el mejor enfoque para tener una lista de selección en un formulario que contiene valores de una base de datos sin duplicar ningún código.¿Cómo puedo generar una lista de selección a partir de los valores de la base de datos?
Lo que pensé que tendría sentido sería cargar estos datos en el controlador y pasarlos a un modelo de vista, por lo que puedo usar SelectListFor<>
o lo que sea para generar la lista. Sin embargo, esto significa que tengo que duplicar toda la carga de la lista en los métodos GET y POST. La otra forma que puedo ver sería pasar el contexto de la base de datos al constructor del modelo de vista y hacer que cargue la lista, pero esto presenta dos problemas más:
1) ¿Debería el modelo de vista conocer el contexto de la base de datos?
2) No puedo usar el enlace de modelo aceptando el tipo de modelo de vista como un argumento de método porque no tiene un constructor sin argumentos (si creo un constructor sin argumento entonces no tendrá las listas si Quiero volver a mostrar la vista que contiene el formulario).
¿Hay una mejor manera de hacerlo? Parece que debe ser un escenario bastante común y cualquier consejo sería apreciado.
¿Qué quiere decir con "duplicar toda la carga de la lista en los métodos GET y POST"? ¿Cómo se ve tu código actual? –
@Tom Excelente pregunta, me gustaría poder hacer 5 votos a favor, pero +1 sin embargo –