2012-06-27 3 views
0

Je viens de commencer mon projet en utilisant MVC et Razor. Maintenant, je rencontre un problème quand il s'agit de lier des données provenant de la base de données à une liste déroulante. S'il vous plaît se référer à mes codes ci-dessous:Relier les données à DropDownList MVC Razor

Spécialité Modèle:

public class SpecializationModel 
{ 
    [Display(Name = "SpecializationID")] 
    public string SpecializationID { get; set; } 

    [Display(Name = "SpecializationDescription")] 
    public string SpecializationDescription { get; set; } 

    public IEnumerable<SelectListItem> Items { get; set; } 
    public int SelectedSpecializationID { get; set; } 
} 

Controller:

public ActionResult Physicians() 
{ 
    SpecializationManager spec = new SpecializationManager(); 
    List<Specialization> SpecializationList = spec.GetAllSpecialization(); 

    var obj = new SpecializationModel(); 

    obj.Items = new[] 
    { 
     foreach(var x in SpecializationList) 
     { 
      new SelectListItem { Value = x.SpecializationID.ToString(), Text = x.SpecializationDescription }; 
     } 
    }; 

    return View(obj); 
} 

J'ai ce gestionnaire qui contient ma requête LINQ pour extraire les données de la base de données. Je rencontre des problèmes sur le contrôleur. Où les points d'erreur sur la syntaxe foreach dire Invalid expression term foreach

Quelqu'un peut-il me diriger vers la bonne direction? Merci beaucoup!

EDIT:

J'ai ce code maintenant sans erreur de la part de foreach (grâce au poste ci-dessous que je combiné avec ce que j'ai ci-dessus). Cependant, je n'arrive pas à faire fonctionner la dernière ligne. Il produit une erreur à propos de la distribution implicite:

var items = new List<SelectListItem>(); 
foreach (var x in SpecializationList) 
{ 
    items.Add(new SelectListItem { Value = x.SpecializationID.ToString(), Text = x.SpecializationDescription }); 
} 

obj.Items = items.ToList(); 

S'il vous plaît faites-moi aider. Merci :)

Répondre

1

yopu ne peut pas mettre un foreach dans un constructeur, essayez:

var items = new List<SelectListItem >(); 
foreach(var x in SpecializationList) 
{ 
      items.add(new SelectListItem { Value = x.SpecializationID.ToString(), Text = x.SpecializationDescription }); 
} 

obj.Items = items; 

Edité

+0

Salut! Merci pour la réponse. Mais votre code semble avoir des erreurs. Dans la partie 'items.Add (x)', le compilateur dit qu'il a des arguments invalides. En outre, 'items.ToArray()' produit une erreur à propos de la conversion implicite de SelectListItem en IEnumerable . – Smiley

+0

Essayez ci-dessus maintenant – Liam

+0

Si cela ne fonctionne pas, vous devez me faire savoir ce qu'est obj.Items! – Liam