Я пытаюсь использовать SelectList для одного из моих представлений, и он просто не заполняется правильно. Он получает правильное количество записей (4), но все они читают System.Web.Mvc.SelectListItem
. Я запустил отладчик кода и увидел, что происходит какая-то странность. Должно быть, я что-то делаю не так, но я не совсем понимаю, что.
Код из ViewModel:
public SelectList DeviceTypes {get; private set;}
....
var device_types = DataTableHelpers.DeviceTypes();
IEnumerable<SelectListItem> sl = device_types.Select(
dt => new SelectListItem { Selected = (dt.DeviceType == 1),
Text = dt.Description,
Value = dt.DeviceType.ToString() }).ToList();
DeviceTypes = new SelectList(sl);
И код из вида:
<%= Html.DropDownList("Type",Model.DeviceTypes) %>
Итак, когда я смотрю на это в отладчике, sl IEnumerable создается правильно. Я вижу все 4 элемента с правильными значениями свойств Text и Value. Однако, когда я вызываю конструктор SelectList, если я раскрываю IEnumerable, который он содержит, я вижу, что в нем 4 записи, но все данные в них потеряны. Текст установлен на System.Web.Mvc.SelectListItem
, а значение null
.
Я попытался изменить ToList()
вызов на ToArray()
, а также полностью удалить его. Это не изменило поведение.
Что я здесь не так делаю?