在MVC中绑定下拉框时,我总是会遇到这个错误:没有名为“country”的类型为'IEnumerable<SelectListItem>'的ViewData项
。
视图
@Html.DropDownList("country", (IEnumerable<SelectListItem>)ViewBag.countrydrop,"Select country")
控制器
List<Companyregister> coun = new List<Companyregister>();
coun = ds.getcountry();
List<SelectListItem> item8 = new List<SelectListItem>();
foreach( var c in coun )
{
item8.Add(new SelectListItem
{
Text = c.country,
Value = c.countryid.ToString()
});
}
ViewBag.countrydrop = item8;
return View();
我不知道如何解决它。
ViewBag.countrydrop
的值是null
。可能是代码未被执行来填充它,或者只有在你提交表单后并返回视图时才出现这种情况(而且你没有再次填充ViewBag.countrydrop
)。 - user3559349ViewBag.countrydrop = new SelectList(coun, "countryid", "country");
和@Html.DropDownList("country",(SelectList)ViewBag.countrydrop, ...)
。 - user3559349ViewBag.country = item8;
更改为ViewBag.countrydrop = item8;
,并将@Html.DropDownList("country","Select country")
更改为@Html.DropDownList("country",(IEnumerable<SelectListItem>)ViewBag.countrydrop,"Select country")
,即根据您发布的代码,您会发现它也可以工作。问题不在于命名,而在于 ViewBag 属性为null
,您现在可以通过将ViewBag.countrydrop = item8;
更改为ViewBag.countrydrop = null;
进行测试。 - user3559349