2016-12-21 2 views
0

ViewModel:DROPDOWNLIST из базы данных в MVC5

public class GroepModel 
    { 
     public int id { get; set; } 
     public String Naam { get; set; } 
     public String Beschrijving { get; set; } 
    } 

Контроллер:

public class GroepController : Controller 
{ 
    AlinaDatabaseDataContext db = new AlinaDatabaseDataContext(); 
    // GET: Groep 
    public ActionResult Groepen() 
    { 
     List<GroepModel> groepen = Mapper.Map<List<GroepenWerkvorm>, List<GroepModel>>(db.GroepenWerkvorms.ToList()); 

     return View(groepen); 
    } 
} 

Посмотреть

@model alina1617.Models.GroepModel 

@{ 
    ViewBag.Title = "Groepen"; 
} 

<h2>Groepen</h2> 
<div> 
    @Html.DropDownListFor(model => model. //This is not working ) 
</div> 

Я посмотрел вокруг и многое из того, что я нахожу, решает это с помощью ViewBags, но разве это не слишком сложно использовать их? Итак, какой был бы лучший подход для получения списка dropdownlist с использованием класса модели с данными из базы данных?

+2

Во-первых, ваш вид использует свойство «Имя», но в вашем «GroepModel» у вас нет свойства «Имя» –

+0

Не генерирует ничего, когда я печатаю модель. (поэтому свойства не отображаются), поэтому, почему я случайно набрал имя, он вообще не работает. В основном это говорит: «Никакая перегрузка для DropDownListFor не принимает 0 аргументов. – user3117628

+0

Может ли это быть из вашего класса DatabaseContext? как это связано? – Bojje

ответ

2

сначала нужно добавить SelectList к вашему ViewModel:

public class MyViewModel { 
    public SelectList list {get;set;} 
    public int selectedItem {get;set;} 
} 

, то вам нужно добавить список в SelectList:

public class GroepController : Controller 
{ 
    AlinaDatabaseDataContext db = new AlinaDatabaseDataContext(); 
    // GET: Groep 
    public ActionResult Groepen() 
    { 
     List<GroepModel> groepen = Mapper.Map<List<GroepenWerkvorm>,  List<GroepModel>>(db.GroepenWerkvorms.ToList()); 

     var model = new MyViewModel(); 

     model.list = new SelectList(groepen, "id", "Naam"); 

     return View(model); 
    } 
} 

и в представлении:

@model alina1617.Models.MyViewModel 

@{ 
    ViewBag.Title = "Groepen"; 
} 

<h2>Groepen</h2> 
<div> 
    @Html.DropDownListFor(model => model.selectedItem, Model.list ) 
</div> 
+0

Быстрый вопрос, что делать, если я сделаю это в viewbag (потому что мне нужно несколько dropdownlists на одном представлении). Я попробовал: @ Html.DropDownListFor (model => model.selectedItem, ViewBag.model.list, «Selecteer een groep»), но это, похоже, не работает, и не работает @ Html.DropDownListFor (ViewBag.model.list , «Selecteer een groep») – user3117628

+0

Найдено: @ Html.DropDownListFor (model => model.selectedItem, ViewBag.model.list как IEnumerable , "Selecteer een groep") – user3117628

Смежные вопросы