我想从视图模型中使用下拉列表过滤网格中的数据,但我不知道该怎么做 . 我想创建这样的控制器:我的控制器:
public ActionResult Index()
{
var missions = this.db.missions_supportmission
.Include(m => m.organization_desk)
.Include(m => m.organization_programme)
.Select(x => new MissionsViewModel()
{
DeskIdSelected = x.organization_desk.name_en,
ProgrammeIdSelected = x.organization_programme.name_en,
DeskList = new SelectList(this.db.organization_desk.ToDictionary(b => b.desk_id, b => b.name_en), "Key", "Value"),
ProgrammeList = new SelectList(this.db.organization_programme.ToDictionary(b => b.prog_id, b => b.name_en), "Key", "Value")
});
在viewmodel中我有这个:
public class MissionsViewModel
{
public missions_supportmission missions_supportmission { get; set; }
[Required]
public string DeskIdSelected { get; set; }
[Required]
public string ProgrammeIdSelected { get; set; }
[Required]
public string CountryIdSelected { get; set; }
[Required]
public string NatureIdSelected { get; set; }
[Required]
public string DirectionIdSelected { get; set; }
[Required]
public string UnitIdSelected { get; set; }
[Required]
public string TypeIdSelected { get; set; }
public SelectList DeskList { get; set; }
public SelectList ProgrammeList { get; set; }
public SelectList TypeList { get; set; }
public SelectList CountryList { get; set; }
public SelectList NatureList { get; set; }
public SelectList DirectionList { get; set; }
public SelectList UnitList { get; set; }
}
我的视图(在下拉列表中,我使用了第一个视图包,但我不想再使用它了 . 我想使用强类型代码)
@model IEnumerable
Filtres
@using (Html.BeginForm("Index", "Missions", FormMethod.Get))
{
Localisation
@Html.LabelFor(model => model, "Desk", htmlAttributes: new { @class = "control-label col-md-4" })
@Html.DropDownList("SelectedDesk",
new SelectList(ViewBag.Listedesdesks, "Value", "Text", "ViewBag.SelectedDesk"),
"All", new { onchange = "form.submit();", @class = "form-control" })
}
Missions
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm("Index"))
{
@Html.ActionLink("Pays", "Index",
new { SortOrder =ViewBag.ListorderPays,
/*SelectedDesk = ViewBag.ListorderPays,
SelectedProgramme = ViewBag.ListorderDate,*/
})
@Html.ActionLink("Date", "Index",
new { SortOrder = ViewBag.ListorderDate,
/*SelectedDesk = ViewBag.ListorderPays,
SelectedProgramme = ViewBag.ListorderDate,*/
})
Personne
Missions
}
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.DeskIdSelected)
@Html.DisplayFor(modelItem => item.ProgrammeIdSelected)
}
当我调试我的项目时,我有以下错误
System.NotSupportedException: 'Only parameterless constructors and initializers are supported in LINQ to Entities.'
我知道错误的来源,但我不知道如何在控制器中编写我的代码,以便在我的视图中一次使用一个网格和一个下拉列表来使用viewmodel过滤数据 .
谢谢你的帮助!