Я пытаюсь получить значение пользовательского SelectList для передачи в контроллер.Параметры моего списка выбора заполняются из таблицы в базе данных:
public class Priority
{
public Guid Id { get; set; }
public string Name { get; set; }
}
Моя модель и модель вида выглядит следующим образом:
public class RequestViewModel
{
public Request Request { get; set; }
public IEnumerable<Priority> Priorities { get; set; }
}
public class Request
{
public Guid Id { get; set; }
public Priority Priority { get; set; }
}
Использование
Html.DropDownListFor(x => x.Request.Priority, new SelectList(Model.Priorities, "Id", "Name", Model.Request.Priority), new { @class = "custom-select" })
DropdownList корректно заполняется текстом и значением.
При редактировании значение раскрывающегося списка в контроллере равно нулю.
public IActionResult Edit(RequestViewModel viewModel)
{
var priority = viewModel.Request.Priority; // this is null
}
Нужно ли создавать собственный ModelBinder для этого экземпляра?Разве построитель моделей по умолчанию не получит правильный выбранный «Приоритет» из идентификатора, переданного в значении?
Кроме того, лучше ли использовать ViewBag вместо Viewmodel для передачи информации, такой как списки выбора, в представление?