2012-08-23 24 views
6

tengo viewdata en mi controlador que está poblada por una lista:Rellenar un desplegable de ViewData

List<employee> tempEmpList = new List<employee>(); 
tempEmpList = context.employees.ToList(); 
ViewData["tempEmpList"] = tempEmpList; 

y yo estoy pasando esto en mi opinión, la cuestión es: ¿Cómo puedo colocar el contenido de la viewdata lista en una lista desplegable?

Los datos de visualización serán .name del elemento de la lista.

Sé que podría hacer un foreach en el Viewdata y crear una lista de selección, pero esto parece un poco largo aliento

Respuesta

17

Puede utilizar el ayudante DropDownList html:

@Html.DropDownList("SelectedEmployee", 
    new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name")) 

En el SelectList constructor Puede especificar qué propiedades de la clase Employee se deben usar como texto y el valor en el menú desplegable (por ejemplo, "Id", "Nombre")

El nombre del menú desplegable ("SelectedEmployee") se utilizará cuando publique nuevamente sus datos en el servidor.

+1

Esto muestra el error: 'CS0305: El uso del tipo genérico 'System.Collections.Generic.IEnumerable ' requiere 1 Tipo arguments' me gusta este enfoque, aunque creo – JustAnotherDeveloper

+2

tiene referencia 'System.Collections.Generic' en su vista pero' SelectList' requiere 'System.Collections.IEnumerable' pruébelo con el espacio de nombres explícito:' new SelectList ((System.Collections.IEnumerable) ViewData ["tempEmpList"], "Id", "Name") ' – nemesv

+0

Lo resolví, tuve que hacer referencia a la lista y funcionó bien :) – JustAnotherDeveloper

4

Configurar el ViewData de la forma habitual, la asignación de un nombre de clave que se asigna a una propiedad en su modelo que será atado en Post ...

ViewData["ModelPropertyName"] = new SelectList(...) 

A continuación, en su opinión, simplemente añadir un Html.DropDownList. ..

@Html.DropDownList("ModelPropertyName") 
2

Por favor, intente con eso. He tratado con MVC5

@Html.DropDownList("SelectedEmployee", new SelectList((System.Collections.IEnumerable) ViewData["tempEmpList"],"id","Name"))

Cuestiones relacionadas