Вы должны передать SelectList
в раскрывающийся список, но на самом деле связыватель модели путается между PlayerId
как свойством viewmodel и PlayerId
как ViewBag
свойством, что приводит к ошибке.
Лучшесоздайте свойство viewmodel, в котором будет храниться список опций с другим именем:
public class ViewModel
{
public int PlayerId { get; set; }
// other properties
// option list here
public List<SelectListItem> PlayerList { get; set; }
}
Затем добавьте списки опций из базы данных в действие контроллера:
public ActionResult Create()
{
var model = new ViewModel();
model.PlayerList = db.Players.Select(x => new SelectListItem { Text = x.Name, Value = x.Id }).ToList();
return View(model);
}
И используйте хелпер со строгим типом для привязкивпоследствии:
@Html.DropDownListFor(model => model.PlayerId, Model.PlayerList, "Select", new { @class = "form-control" })
Проблема, связанная с данной:
Элемент ViewData, имеющий ключ, имеет тип 'System.Int32', но должен иметь тип 'IEnumerable '