2016-10-01 5 views
0

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

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 

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

Cannot convert lambda expression to type 'IEnumerable<SelectListItem>' because it is not a delegate type

+1

Он просто должен быть '@ Html.DropDownListFor (м => m.department, Model.departments2) '. Также обратите внимание, что тег model-view-controller предназначен для вопросов о шаблоне. Существует определенный тег для реализации ASP.NET-MVC. –

ответ

2

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

+0

Его уже 'IEnumerable ' - его не нужно отбрасывать –

+0

спасибо за комментарий – Nadeem

+0

Спасибо за вашу помощь. Стивен и Надим – jinxinhelloworld