2010-08-06 5 views
2

je le schéma de base de données suivante: alt textComment remplir un DropDownList dans ASP.Net MVC2?

Voilà comment je alimenter un DropDownList dans mes AreaController.cs:

public ActionResult Edit(int id) 
{ 
    Area area = areaRepository.GetArea(id); 
    JefeRepository jefe = new JefeRepository(); 
    ViewData["Jefes"] = new SelectList(jefe.FindAllJefes().ToList(), "ID", "Nombre", area.Jefe.Nombre); 
    return View(area); 
} 

Puis, à mon avis, je l'afficher comme ceci:

<%: Html.DropDownList("IDJefe", (SelectList)ViewData["Jefes"]) %> 

DropDownList se charge correctement mais affiche uniquement le nom du fichier Jefe. Je veux afficher à la fois le nom et le nom de famille. Comment puis-je atteindre cet objectif?

J'ai essayé de faire quelque chose comme ça, mais il n'affiche que le prénom.

ViewData["Jefes"] = new SelectList(jefe.FindAllJefes().ToList(), "ID", "Nombre", area.Jefe.Nombre + area.Jefe.Apellido); 

Voici comment cela montre: alt text

Répondre

1

Dans votre classe, vous pouvez faire une propriété qui pour vous combiner et peut également être lier à votre liste, F.E. si je classe personne:

public class Person 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string FullName { get { return string.Format("{0} {1}", FirstName, LastName); } } 
} 

Ensuite, vous pouvez facilement lier comme:

ViewData["Persons"] = new SelectList(persons, "Id", "FullName ", ...); 

En ce qui il a juste le getter il ne sera pas impliqué dans vos processus de logique métier - il n'aide ;)

PS. Désolé pour un autre exemple, mais je ne comprends vraiment pas espagnol;)

+1

J'ai essayé de taper "Nombre" + "Apellido" et il me donne une exception indiquant que le modèle n'a pas cette propriété. Je vais essayer votre suggestion. :) –

+0

Vous ne pouvez spécifier qu'un membre public qui sera lié en tant que membre d'affichage. La propriété qui combine les deux fera l'affaire :) Essayez mon exemple et dites-moi si cela résout votre problème ... –

+0

A travaillé PARFAITEMENT. Très bonne réponse! :) Je vais écrire un tutoriel pour cette question commune. Merci encore. –