No dudes en compartir nuestro sitio y códigos en tus redes sociales, ayúdanos a hacer crecer esta comunidad.
Solución:
Desafortunadamente @Html.DropDownListFor()
se comporta de forma un poco diferente a otros ayudantes al representar controles en un bucle. Esto se informó anteriormente como un problema en CodePlex (no estoy seguro si es un error o solo una limitación)
Hay 2 opciones para resolver esto y garantizar que se seleccione la opción correcta en función de la propiedad del modelo
Opción 1 (usando un EditorTemplate
)
Crea una personalizada EditorTemplate
para el tipo de la colección. Crea un parcial en /Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml
(tenga en cuenta que el nombre debe coincidir con el nombre del tipo
@model yourAssembly.AggregationLevelConfiguration
@Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"])
.... // other properties of AggregationLevelConfiguration
y luego en la vista principal, pase el SelectList
al EditorTemplate
como additionalViewData
@using (Html.BeginForm())
{
...
@Html.EditorFor(m => m.Configurations , new CodeTypeItems = Model.CodeTypeItems )
...
opcion 2 (generar un nuevo SelectList
en cada iteración y establezca el selectedValue
)
En esta opción tu propiedad CodeTypeItems
debería ser IEnumerable
, No un SelectList
(o simplemente hacer codeTypes
una propiedad pública). Luego en la vista principal
@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.CodeTypeItems, "Id", "Name", Model.Configurations[0].HelperCodeType)
Nota al margen: no es necesario utilizar new { id = "Configurations[0].HelperCodeType"
– el DropDownListFor()
método ya generado que id
attribute
Puntuaciones y reseñas
Nos puedes añadir valor a nuestro contenido informacional contribuyendo tu experiencia en las explicaciones.