の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
と交換し、 Model.departments2) '。 model-view-controllerタグは、パターンに関する質問のためのものです。 ASP.NET-MVCの実装には特定のタグがあります。 –