我对此非常困惑,我觉得我必须遗漏一些非常明显的东西。
我有一个包含以下属性的视图模型:
public class ExampleModel
{
public int CourseId { get; set; }
public List<SelectListItem> CourseList { get; set; }
}
在我看来,我以下列方式使用Html.DropDownListFor()
辅助方法:
@Html.DropDownListFor(m => m.CourseId, Model.CourseList)
这适用于初始页面加载。然而,当我单击提交,并且表单中的某个地方出现错误时,我的控制器会再次尝试加载表单视图以显示错误,并且我收到此异常:
The ViewData item that has the key 'CourseId' is of type
'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.
突出显示以下行:
@Html.DropDownListFor(m => m.CourseId, Model.CourseList)
我的问题很简单:为什么?为什么CourseId
需要IEnumerable
为SelectListItem
才能成为该方法中的第一个参数?我已经检查了该方法的所有可用签名,并且 none 将IEnumerable
SelectListItem
作为第一个参数。那是什么给出了什么?
答案 0 :(得分:0)
我想通了......呃。我不知道为什么 是我得到的错误,但问题是我的CourseList
第二次没有被填充,因此是空的。修复了修复错误的问题。
至于为什么错误信息是如此偏离基础,我仍然不确定。