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