¿Cuál es la manera adecuada de establecer el valor de una lista de selección en un arreglo?
La mayoría de los ejemplos que he visto sobre cómo utilizar DropDownListFor
muestran un modelo con un IEnumerable
o una List
de SelectListItem
, y puedes establecer la propiedad Selected
del elemento que deseas que se muestre inicialmente.
¿Cuál es la manera adecuada (o una manera adecuada) de hacer esto para un arreglo de menús desplegables? Supongo que podría hacer un IEnumerable<IEnumerable<SelectList>>
para que cada menú desplegable tenga su propio IEnumerable<SelectList>>
con el valor apropiado seleccionado, pero eso simplemente no parece correcto.
Creo que habría sido muy útil que el método DropDownListFor
tuviera una sobrecarga que permitiera configurar un valor predeterminado. La mejor solución que se me ocurre en este momento es simplemente establecer el valor predeterminado para el elemento apropiado (y borrar el valor seleccionado para todos los demás) justo antes de llamar a DropDownListFor
.
¿Pero seguramente hay una manera más adecuada de hacerlo? ¿O tal vez DropDownListFor
simplemente no es adecuado para este trabajo y sería más fácil usar HTML directamente?
davy.ai
Una posible solución para mostrar una matriz de menús desplegables con valores preseleccionados es utilizar la sintaxis de bucle
for
en la vista para iterar a través de la matriz y renderizar cada menú desplegable individualmente, estableciendo la propiedadSelected
de los objetosSelectListItem
para cada menú desplegable según sea necesario. Aquí hay un ejemplo:Y en la vista:
Este enfoque evita la necesidad de
IEnumerable
s anidadas y le permite establecer los valores predeterminados de manera clara y legible. Sin embargo, requiere algún código adicional en el controlador para establecer los valores predeterminados antes de pasar el modelo a la vista. Si está trabajando con un gran número de menús desplegables o necesita establecer valores predeterminados dinámicamente según la entrada del usuario, entonces usar HTML directo con JavaScript puede ser una solución más apropiada.