我有这个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:
时将其填入actionresultvar 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'
我在堆栈流程中发现了一些类似的问题,但无法知道。
问题是什么? 感谢。
答案 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);
}
}