Проблема в помощнике asp-items
. Требуется IEnumerable<SelectListItem>
в качестве аргумента. Даже если вы определяете свойство в модели как IEnumerable<>
, но используете ToList()
, коллекция, которую вы назначаете для ministryItems
, по-прежнему List<>
, что вызывает исключение. Чтобы обойти это, вы должны сделать
ministryItems = db.Ministry.Select(x=>new SelectListItem{Value=x.Name,Text=x.Name}).ToList() as IEnumerable<SelectListItem>;
Лично я предпочитаю определять SelectList непосредственно на странице Razor.
В контроллере у нас есть
ministryItems = db.Ministry.ToList();
и в раскладке Razor
<select asp-items="@new SelectList(Model.ministryItems, nameof(Ministry.Name), nameof(Ministry.Name))">
<option>Select Ministry</option>
</select>
Но на самом деле это вопрос вкуса.