Saltar al contenido

Obtener múltiples valores seleccionados en Html.DropDownlistFor

Te recomendamos que revises esta resolución en un entorno controlado antes de pasarlo a producción, saludos.

Solución:

Utilizar una ListBoxFor en vez de DropDownListFor:

@Html.ListBoxFor(m => m.branch, CommonMethod.getBranch("", Model.branch), "--Select--")

@Html.ListBoxFor(m => m.division, CommonMethod.getDivision(Model.branch, Model.division), "--Select--")

El branch y division Obviamente, las propiedades deben ser colecciones que contendrán los valores seleccionados.

Y un ejemplo completo de la forma correcta de crear un menú desplegable de selección múltiple usando un modelo de vista:

public class MyViewModel

    public int[] SelectedValues  get; set; 
    public IEnumerable Values  get; set; 

que se completaría en el controlador:

public ActionResult Index()

    var model = new MyViewModel();

    // preselect items with values 2 and 4
    model.SelectedValues = new[]  2, 4 ;

    // the list of available values
    model.Values = new[]
    
        new SelectListItem  Value = "1", Text = "item 1" ,
        new SelectListItem  Value = "2", Text = "item 2" ,
        new SelectListItem  Value = "3", Text = "item 3" ,
        new SelectListItem  Value = "4", Text = "item 4" ,
    ;

    return View(model);

y en la vista:

@model MyViewModel
...
@Html.ListBoxFor(x => x.SelectedValues, Model.Values)

Es el ayudante de HTML el que preseleccionará automáticamente los elementos cuyos valores coincidan con los del SelectedValues propiedad.

A mi me sirve tambien para @Html.DropDownListFor:

Modelo:

public class MyViewModel

    public int[] SelectedValues  get; set; 
    public IEnumerable Values  get; set; 

Controlador:

public ActionResult Index()

    var model = new MyViewModel();

    // the list of available values
    model.Values = new[]
    
        new SelectListItem  Value = "2", Text = "2", Selected = true ,
        new SelectListItem  Value = "3", Text = "3", Selected = true ,
        new SelectListItem  Value = "6", Text = "6", Selected = true 
    ;

    return View(model);

Maquinilla de afeitar:

@Html.DropDownListFor(m => m.SelectedValues, Model.Values, new  multiple = "true" )

Los valores seleccionados enviados en el controlador se ven así:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Comentarios y puntuaciones del artículo

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *