asp.net-mvc-3 - ejemplos - selectlist mvc
¿Cómo se crea adecuadamente un MultiSelect<select> usando el ayudante DropdownList? (1)
No utiliza DropDownListFor
si desea crear una lista de selección múltiple. Utiliza el ayudante ListBoxFor
.
Ver modelo:
public class MyViewModel
{
public string[] SelectedIds { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
Controlador:
public ActionResult Index()
{
var model = new MyViewModel
{
// preselect the first and the third item given their ids
SelectedIds = new[] { "1", "3" },
// fetch the items from some data source
Items = Enumerable.Range(1, 5).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = "item " + x
})
};
return View(model);
}
Ver:
@model MyViewModel
@Html.ListBoxFor(x => x.SelectedIds, Model.Items)
(Lo siento, hay varios elementos aquí, pero ninguno parece permitirme hacer que funcione).
Quiero crear una DropDownList que permita una selección múltiple. Puedo llenar la lista pero no puedo hacer que los valores seleccionados actualmente parezcan funcionar.
Tengo lo siguiente en mi controlador:
ViewBag.SelectedPropertyGroups = from g in company.Entities
.First().Properties.First().PropertyGroups
select new {
g.eFinGroup.Key,
Value = g.eFinGroup.Description };ViewBag.PropertyGroups = from g in db.eFinGroups
where g.GroupType.Contents == "P"
select new
{
Key = g.Key,
Value = g.Description,
Selected = true
};
En la vista que tengo:
@Html.DropDownListFor(model => model.PropertyGroupsX,
new MultiSelectList(ViewBag.PropertyGroups
, "Key", "Value"
, ViewBag.SelectedPropertyGroups),
new { @class = "chzn-select", data_placeholder = "Choose a Property Group", multiple = "multiple", style = "width:350px;" })
PropertyGroupX es una cadena [] en el modelo.
He intentado todo tipo de iteraciones con las propiedades seleccionadas ... pasando solo el valor, solo la clave, ambas, etc.
Además, ¿de qué tipo se supone que es PropertyGroupX? ¿La matriz de cadenas es correcta? ¿O debería ser un diccionario que contiene los grupos de propiedades actuales? Realmente estoy teniendo dificultades para encontrar doc en esto.
Alguien me sugirió que debería usar ListBoxFor. He cambiado a eso y todavía tengo el mismo problema. Los valores seleccionados no se establecen como seleccionados cuando se representan las etiquetas de opción. Esto es lo que he intentado:
@ Html.ListBoxFor (model => model.PropertyGroups, nueva MultiSelectList (ViewBag.PropertyGroups, "Key", "Value"))
He probado el modelo. PropertyGroups como una colección de cadenas que coinciden con los valores, como una colección de Guid que coincide con estos ID y como un tipo anónimo con una clave y un valor para hacer coincidir los elementos en el ViewBag. Nada parece funcionar.