@ TreyE правильно указывает, что вы никогда не указываете, что какой-либо конкретный элемент списка выбора должен быть выбран при отображении в представлении.
Есть несколько способов сделать это. Сначала нужно использовать объект SelectList и использовать его конструктор, который позволяет передавать объект, который должен быть выбран, это перегрузка SelectList(IEnumerable, String, String, Object)
MSDN SelectList .
SelectList
поддерживается только в .NET 3.5+, однако, к вашему сведению.
Во-вторых, в GetServerTypes()
вы можете написать:
private List<SelectListItem> GetServerTypes()
{
List<SelectListItem> sl = new List<SelectListItem>();
IQueryable<ServerType> items = (from t in _entities.ServerTypes select t);
foreach (var item in items)
sl.add(new SelectListItem { Value = item.id, Text = item.Description, Selected = item.isSelected } );
return sl;
}
Также помните, что должен быть выбран только один элемент, поэтому убедитесь, что если вы попытаетесь использовать какое-либо логическое свойство, то не исключено, что более чем у одного item
может быть установлено свойство isSelected
, установленное на true
.
В качестве альтернативы, если вам нужно использовать какой-то тип оператора if
, чтобы решить, является ли Selected = true
(т.е. ваш элемент не имеет логического значения isSelected), вы можете добавить это в цикл foreach
.
foreach(var item in items)
{
if //condition
sl.Add(new SelectListItem { Value = item.id, Text = item.Description, Selected = true });
else
sl.Add(new SelectListItem { Value = item.id, Text = item.Description, Selected = false });
}