没有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上发现了一些类似的问题,但不知道。

有什么问题?谢谢。

没有IEnumerable类型的ViewData项

发生的情况是,在发布和重新加载页面以根据所选省份显示城市时,不会再次生成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);
    }
}