es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo selecciono elementos en mi lista desplegable desde el controlador?

En mi aplicación, tengo una lista de selección múltiple que se llena con una lista de frutas.

Código:

public ActionResult Index(int? userId)
{
    viewModel.FruitSelectList = viewModel.FruitList.Select(item => new SelectListItem { Value = item.iFruitID.ToString(), Text = item.sFruitName }).ToList();
    return View();
}

Para referencia, así es como se ve mi modelo:

public class Fruit
{
    public int FruitID {get; set;}
    public string FruitName {get; set;}
    public int UserID {get; set;}
}

Necesito devolver todos los elementos en la base de datos que coincidan con un userId.

Código:

var result = (from u in db.Fruit where u.UserID == userId select u).ToList();

Pero, ¿cómo muestro el result como elementos seleccionados en mi lista desplegable?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar el resultado como elementos seleccionados en su lista desplegable, es necesario recorrer el FruitSelectList y establecer la propiedad Selected de cada elemento en función de si coincide con el result. Aquí hay un ejemplo de código:

    public ActionResult Index(int? userId)
    {
        viewModel.FruitSelectList = viewModel.FruitList
            .Select(item => new SelectListItem 
            { 
                Value = item.FruitID.ToString(), 
                Text = item.FruitName,
                Selected = result.Any(r => r.FruitID == item.FruitID) // establecer la propiedad Selected en función de si coincide con el resultado
            })
            .ToList();
        return View();
    }
    

    Tenga en cuenta que debe asegurarse de que result esté declarado y poblado antes de llamar al método Index(). Además, esto asume que result es una lista de objetos Fruit con la propiedad FruitID que coincide con la propiedad Value del SelectListItem.

Comments are closed.