2016-06-26 17 views
2

Ich arbeite mit EF und MVC, neue Sachen für mich. Ich habe die folgende Klasse:C# MVC - DropDownList aus Klasseneigenschaft füllen

public class Client 
{ 
    [Key] 
    public int ClientId { get; set; } 
    public Category Category { get; set; } 

} 

und ich möchte im Blick auf die „Create“ Action, eine wählbare Dropdownlist mit allen Kategorien zu wählen Zusammenhang zeigen.

Ich habe ein Ansichtsmodell auch:

public class CategoryViewModel 
{ 
    public int SelectedCategoryId { get; set; } 
    public IEnumerable<SelectListItem> Categories { get; set; } 
} 

, die ich in der Steuerung verwenden:

private IEnumerable<SelectListItem> GetCategories() 
    { 
     var db = new MyDBContext(); 
     var categories = db.Categories 
        .Select(x => 
          new Category 
          { 
           CategoryId = x.CategoryId, 
           Name = x.Name 
          }); 

     return new SelectList(categories, "Value", "Text"); 
    } 

... und in der Create():

public ActionResult Create() 
    { 
     var model = new CategoryViewModel(); 
     model.Categories = GetCategories(); 
     return View(model); 
    } 

ich nicht wissen, wie man das Dropdown in der Ansicht auffüllt:

Danke für die Rettung! (RE5 Zitat)

+0

'@ Html.DropDownListFor (m => m.SelectedCategoryId, Modell .Categories) 'aber Ihre' GetCategories() 'Methode ist falsch und löst eine Ausnahme aus. Verwenden Sie 'return db.Categories.Select (x => new SelectListItem {Wert = x.CategoryId.ToString(), Text = x.Name});' –

Antwort

2

Es gibt verschiedene overloads aber dies ist eine Option:

@Html.DropDownListFor(x => x.SelectedCategoryId, Model.Categories) 
0

Versuchen Sie, diesen Code zu verwenden

@Html.DropDownListFor(m => m.SelectedCategoryId, Model.Categories)