没有..类型的ViewData项.问题
本文关键字:问题 ViewData 类型 没有 | 更新日期: 2023-09-27 18:17:20
我正在一个内部网上工作,确切地说,是在一个活动报告系统上工作,该系统列出了员工每周的活动。所以我可以用DropDownList
选择有问题的雇员,但是我在选择时遇到了问题。
public ActionResult Client() // ReportIndex
{
[...]
string strEmployee = "-1";
string strUser = User.Identity.Name;
if (null != (string)Session["ReportEmployee"])
strEmployee = (string)Session["ReportEmployee"];
[...]
ProjectResourceManagerService pr = new ProjectResourceManagerService(new ModelStateWrapper(this.ModelState));
//nea60
IEnumerable<SelectListItem> pl = pr.ListProject(strUser, strYear, strMonth);
IEnumerable<SelectListItem> pl2 = pr.ListEmployee();
foreach (SelectListItem item in pl)
if (item.Value == strProject)
item.Selected = true;
ViewBag.ProjectList = pl;
foreach (SelectListItem item in pl2)
if (item.Value == strEmployee)
item.Selected = true;
ViewBag.EmployeeList = pl2;
//nea11
Session["ReportYear"] = strYear;
Session["ReportMonth"] = strMonth;
//nea58
Session["ReportProject"] = strProject;
//nea58
return View();
}
可以看到,pl2
包含了雇员列表,pr.ListEmployee()
的帮助下,以下DropDownList
填充:
<td> <%:Html.DropDownList("Employee", (List<SelectListItem>)ViewBag.EmployeeList, "", new { onchange = "this.form.submit();" })%></td>
但是当我选择一个Employee
时,它给了我以下错误:
系统。InvalidOperationException:没有'IEnumerable'类型的ViewData项具有'Employee'键。
我觉得很奇怪,因为列表确实填满了名字。
出现错误是因为ViewBag.EmployeeList
的值是null
(在这种情况下,DropDownList()
的回退是使用第一个参数作为IEnumerable<SelectListItem>
属性)
由于您已经在GET方法中正确地填充了它,因此发生错误是因为您在POST方法中返回了视图,并且没有重新分配ViewBag.EmployeeList