Я использую методы Html.DropDownList
и Html.DropDownListFor
для генерации выпадающих списков. Оба метода принимают коллекцию элементов списка. Для каждого элемента можно указать, является ли он выделенным. При создании коллекции я явно указываю выделенный (Selected = true) option, но когда список отображается, то выделен всегда только первый элемент. В чем здесь проблема?
Выделение элемента в выпадающем списке (DropDownList) в ASP.NET MVC
Новые ответы
Методы Html.DropDownList и Html.DropDownListFor использую имя свойства модели для определения выделенного элемента выпадающего списка. DropDownList принимает непосредственно строку имени свойства, а DropDownListFor — выражение, которое позволяет обратиться к свойству в строго-типизированной манере. Оба метода перекрывают значение выделенного элемента списка, определенное пользователем. То есть, даже если явно указано, какой элемент выделить, все равно будет выделен элемент, значение которого совпадает с переданным свойством модели. Если ни один элемент списка не соответствует свойству модели, то будет выделен первый пункт.
Если есть проблемы с отображением выделенного элемента можно попробавать следующее.
1) Если нужно жестко задавать свойство Selected вручную, то необходимо использовать метод Html.DropDownList
, и в качестве первого параметра передавать строку, для которой нет поля в модели.
2) Если нужно, чтобы выделенным был элемент, соответствующий свойству модели, нужно чтобы значение Value
объекта SelectListItem
точно соответствовало текстовому значению свойства модели:
var item = new SelectListItem
{
Text = "Text",
Value = someObjectOrEnum.ToString()
}