没有类型为'IEnumerable <selectlistitem>'的ViewData项具有键'[0] .ID'

时间:2017-02-07 23:10:34

标签: c# asp.net-mvc

我见过这个问题的各种解决方案,包括这个:There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'xxx'&gt;

但我无法解决我的问题。

我的视图模型包含在帖子上更新的记录列表。我可以在页面加载时填充项目列表,包括选择菜单。但是如果出现模型错误,并且我返回View(模型),则会收到此错误:

没有类型为'IEnumerable'的ViewData项具有键'[0] .ClinicID'

我理解所选项目在模型中返回为null,但我无法弄清楚我缺少的是什么。

控制器:

ClinicListDB = db.Clinic.Where(p => (p.ClinicActive == "Yes").ToList();

model = from workday in combinedDateList   
        from npcals in db.NPCalendar.Where(x => x.NPCalDate == workday && x.NPID == NPID).Include(x => x.Clinics).DefaultIfEmpty()            
        from ts in db.Timesheets.Where(x => x.TSDate == workday && x.NPID == NPID).Include(x => x.Clinics).Distinct().DefaultIfEmpty()
select new ViewModel
{
    ClinicName = ts != null ? ts.Clinics.ClinicName : npcals != null ? npcals.NPCalLocation : "TBD", 
    ClinicType = ts != null ? ts.Clinics.ClinicType : npcals != null ? npcals.Clinics.ClinicType : "",
    ClinicID = ts != null ? ts.ClinicID : npcals != null ? npcals.ClinicID : 453,
    ClinicList = ClinicListDB.Select(c => new SelectListItem
    {
       Value = c.ClinicID.ToString(),
       Text = c.ClinicName + " | " + c.ClinicCity,
       Selected = c.ClinicID == (ts != null ? ts.ClinicID : npcals != null ? npcals.ClinicID : 453)}).Distinct().OrderBy(x => x.Text).ToList(),                 
    }
    ...(etc)...
 }).ToList()

查看

foreach (var i in Model)
{
    @Html.DropDownListFor(a => a[j].ClinicID, (IEnumerable<SelectListItem>)i.ClinicList, new { @class = " form-control input-sm" })
}

在ModelState.Error

return View(model);

没有类型为'IEnumerable'的ViewData项具有键'[0] .ClinicID'

我已经尝试将列表数据移动到ViewBag中,但这没有帮助。我缩写了我的代码以便于阅读。如果我遗漏了一些东西,请告诉我。谢谢。

0 个答案:

没有答案