Select List

Soms zijn er momenten dat je de gebruiker zijn antwoorden wilt limiteren door een vorm van een ComboBox te gebruiken. Bijvoorbeeld bij het invoeren van een genre. Hiervoor kunnen we een IEnumerable van SelectListItem’s gebruiken in het MovieCreateViewModel.

We zetten er meteen een paar SelectListItem objecten in om de lijst te vullen. In het Create view moeten we nu aanduiden dat de items uit deze IEnumerable moeten komen.

Als je je programma nu al zou testen, zou je merken dat je een NullReferenceException krijgt. Dat komt omdat het initializeren van new List<SelectListItem>() eigenlijk nooit gebeurt, want er wordt ook nooit een object aangemaakt van MovieCreateViewModel als je de Create view bekijkt.

Dat is heel makkelijk op te lossen, je initializeerd het gewoon in de View methode in de Create methode van de MovieController.

Als we nu een film willen toevoegen kunnen we hem selecteren uit de lijst.

En het genre wordt als een string opgeslagen in de database.

Voor een film te bewerken moeten we nog hetzelfde doen. Voor het vullen van het select menu gaan we dubbele code hebben en als we een genre toevoegen moeten we dat in beide viewmodels doen, maar dat valt op te lossen door deze later bijvoorbeeld uit de database te halen. Dit voegen we toe in MovieEditViewModel:

Ook in Edit.cshtml doe je hetzelfde.

Aangezien we al een MovieEditViewModel object meegeven, moeten we hier verder niets meer aanpassen.