没有类型为'IEnumerable'密钥为'Clients

本文关键字:密钥 Clients SelectListItem 类型 IEnumerable | 更新日期: 2023-09-27 18:06:32

我有一个变量,我填充记录从我的数据库。然后,我将这个列表显示在视图上作为一个下拉框。然而,一旦到达下拉点,它就失败了。

控制器:

  public ActionResult Review() {
            var reviews = reviewRepo.GetAllReviews();
            var clients = clientRepo.Clients();    
            List<SelectListItem> items = new SelectList(clients, "ClientID", "ClientName").ToList();
            items.Insert(0, (new SelectListItem { Text = "Default", Value = "0" }));
            ViewBag.ListOfClients = items;
            IEnumerable<AdminReviewViewModel> model = reviews.Select(s => new AdminReviewViewModel() {
                ClientID = s.ClientID,
                ReviewID = s.ReviewID,
                ReviewName = s.ReviewName,
                ReviewPeriodID = s.ReviewPeriodID,
                ReviewPeriodName = s.ReviewPeriod
            });
            return View(model);
        }

视图:

@using (Html.BeginForm("Review", "UserAdmin", FormMethod.Post)) {
    @Html.DropDownList("Clients", ViewBag.ListOfClients as SelectList, new { @class = "GRDropDown", @id = "ReportDD"})
    <button type="submit" value="Submit" class="btn btn-default">Submit</button>
}

没有类型为'IEnumerable<SelectListItem>'密钥为'Clients

修复。在错误信息中有很多线索。它在抱怨没有客户。这是因为在我的下拉框中期待ClientID和ClientName。而是接收Value和Text。所以我把下拉菜单改成这样:

 @Html.DropDownList("Clients", new SelectList(ViewBag.ListOfClients, "Value", "Text"), new { @class = "GRDropDown", @id = "ReportDD" })