Невозможно преобразовать лямбда-выражение в тип "IEnumerable<SelectListItem>", так как это не тип делегата

ViewModel

public class EmployeeIndexViewModel {
    public int selectedDepartment { get; set; }
    public IList departments1 { get; set; }
}

Действие контроллера

List<Department> list = new List<Department>();
list.Add(new Department { ID = 1, Name = "D1" });
list.Add(new Department { ID = 2, Name = "D2" });
list.Add(new Department { ID = 3, Name = "D3" });
employeeIndexViewModel.departments1 = list;
employeeIndexViewModel.selectedDepartment = "2";

Посмотреть

@Html.DropDownListFor(m => m.department, new SelectList(Model.departments1, "Id", "Name"))

Теперь кодирование работает нормально. Но мне не нравится этот кусок

new SelectList(Model.departments1, "Id", "Name")

Я хочу добавить его в свою модель представления, а затем просто связать его в моем представлении. Поэтому я изменил свою ViewModel

новая ViewModel

public class EmployeeIndexViewModel {
    public int selectedDepartment { get; set; }
    public IList departments1 { get; set; }
    public IEnumerable<SelectListItem> departments2 { get; set; }//add this
}

новое действие контроллера

List<Department> list = new List<Department>();
list.Add(new Department { ID = 1, Name = "D1" });
list.Add(new Department { ID = 2, Name = "D2" });
list.Add(new Department { ID = 3, Name = "D3" });
employeeIndexViewModel.departments1 = list;
employeeIndexViewModel.selectedDepartment = "2";
employeeIndex2ViewModel.departments2 = new SelectList(list, "id", "name");// add this

новый взгляд

@Html.DropDownListFor(m => m.department, new SelectList(Model.departments1, "Id", "Name"))
@Html.DropDownListFor(m => m.department, (SelectList)(m => m.departments2))//add this

Я получил эту ошибку:

Невозможно преобразовать лямбда-выражение в тип "IEnumerable", так как это не тип делегата

1 ответ

Решение

Удалите лямбда-выражение в новом виде (SelectList)(m => m.departments2) и заменить его на Model.departments2

Другие вопросы по тегам