hacer una lista desplegable que necesita dos propiedades:
- una propiedad a la que se unirá a (por lo general una propiedad escalar de tipo entero o cadena)
- una lista de elementos que contienen dos propiedades (uno de los valores y una para el texto)
En el caso de que sólo haya una lista de cadena que no puede ser explotado para crear una caída utilizable lista de abajo.
Mientras que para el número 2. puede tener el valor y el texto igual a lo que necesita una propiedad para enlazar. Se podría utilizar una versión flexible de tipos del ayudante:
@model List<string>
@Html.DropDownList(
"Foo",
new SelectList(
Model.Select(x => new { Value = x, Text = x }),
"Value",
"Text"
)
)
donde Foo
será el nombre de la ddl y utilizado por el aglutinante modelo por defecto. Por lo que el marcado generado podría ser algo como esto:
<select name="Foo" id="Foo">
<option value="item 1">item 1</option>
<option value="item 2">item 2</option>
<option value="item 3">item 3</option>
...
</select>
Dicho esto una visión mucho mejor modelo para una lista desplegable es el siguiente:
public class MyListModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
y luego:
@model MyListModel
@Html.DropDownListFor(
x => x.SelectedItemId,
new SelectList(Model.Items, "Value", "Text")
)
y si desea preseleccionar alguna opción en esta lista, todo lo que necesita hacer es establecer la propiedad SelectedItemId
de este modelo de vista en el correspondiente Value
de alguna e lement en la colección Items
.
@ Html.Dr opDownListFor (x => yourInputVariable, Model) debería funcionar –