Ответ 1
Вам нужно изменить строку, в которой вы ее создадите, чтобы указать, где искать значения. В вашем случае это будет:
SelectList selectList = new SelectList(selectListItems, "Value", "Text");
Однако это не приведет к переносу выбранного элемента. В этом случае вам понадобится выяснить, какой элемент должен быть выбранным и передать его значение через четвертый параметр.
Вот пример:
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem() { Text = "Test1", Value = "1", Selected = false });
items.Add(new SelectListItem() { Text = "Test8", Value = "8", Selected = true });
items.Add(new SelectListItem() { Text = "Test3", Value = "3", Selected = false });
items.Add(new SelectListItem() { Text = "Test5", Value = "5", Selected = false });
SelectList sl = new SelectList(items, "Value", "Text", "8");
Вы также можете проверить этот поток SO, который может быть полезен.
Изменить: просто просмотрел ваш комментарий, и он не работает, потому что он не достаточно умен, чтобы знать поля Text
и Value
по умолчанию. Вы можете передать ему тип объектов, и это дает вам возможность привязки к нему, определяя, какие свойства должны отображаться в свойствах Text
и Value
.