没有IEnumerable类型的ViewData项
本文关键字:ViewData 类型 IEnumerable 没有 | 更新日期: 2023-09-27 17:52:54
我有这个ViewModel:
public class FoundViewModel
{
public string Title { get; set; }
public string Description { get; set; }
public int City { get; set; }
public int SubGroup { get; set; }
public string Address { get; set; }
public DateTime FindDate { get; set; }
}
和在视图中,我添加了两个下拉菜单,并在actionresult中填充它,当调用get:
var Provinces = _provinces.SelectAll();
ViewBag.Provinces = new SelectList(Provinces,"Id","Title",Provinces.FirstOrDefault().Id);
和in view:
@Html.DropDownList("drpProvince", (SelectList)ViewBag.Provinces, new { @onchange="javascript:getcity(this.value);"})
但是当点击按钮并发布它时,我得到这个错误:
There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'drpProvince'
我在stackover flow上发现了一些类似的问题,但不知道。
有什么问题?谢谢。
发生的情况是,在发布和重新加载页面以根据所选省份显示城市时,不会再次生成ViewBag。
解决方案是再次初始化ViewBag,因为在每次调用PostBack后都会丢失。
的例子。
public ActionResult loadCities () {
/* Logic .... */
// Here initialize ViewBag again to view the know.
return View ();
}
当您在Get
视图中填充viewbag并且当它发布和模型无效时,您将模型返回到视图和viewbag为空,您应该填充所有viewbag,如果模型在返回视图之前无效
[Httppost]
public ActionResult YouAction(myVm mymodel)
{
if (!ModelState.IsValid)
{
// fill your Viewbags
return View(mymodel);
}
}