没有IEnumerable类型的ViewData项

时间:2015-06-02 19:33:14

标签: c# asp.net-mvc asp.net-mvc-4

我有这个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; }

}

并在视图中添加两个Dropdown并在调用get:

时将其填入actionresult
var Provinces = _provinces.SelectAll();
       ViewBag.Provinces = new SelectList(Provinces,"Id","Title",Provinces.FirstOrDefault().Id);

并在视野中:

@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'

我在堆栈流程中发现了一些类似的问题,但无法知道。

问题是什么? 感谢。

2 个答案:

答案 0 :(得分:3)

当发布帖子并重新加载页面以根据所选省份显示城市时,会发生什么情况,不会再次生成ViewBag。

解决方案是再次初始化ViewBag,因为在PostBack每次调用后它都会丢失。

实施例

public ActionResult loadCities () {
    /* Logic .... */
    // Here initialize ViewBag again to view the know.
    return View ();
}

答案 1 :(得分:1)

当您在Get视图中填充viewbag并且当它发布并且模型无效时,您发现此错误,您将模型返回到视图并且viewBag为空,如果模型不是有效的,您应该填写所有Viewbag返回视图。

[Httppost]
public ActionResult YouAction(myVm  mymodel)
{
    if (!ModelState.IsValid)
    {
       // fill your Viewbags 
       return View(mymodel);
    }
}