首次加载页面时,我可以绑定下拉列表,但是当页面回发时会出现此错误:
没有类型为IEnumerable<SelectListItem>
的ViewData项,其键为'CicekListesi'。
我的控制器如下所示:
[HttpGet]
public ActionResult UrunEkleCicek()
{
ApplicationDbContext db = new ApplicationDbContext();
ViewData["CicekListesi"] = new SelectList(db.CicekTuru, "cicekID", "cicekAdi");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UrunEkleCicek(Urun UrunBilgi)
{
ApplicationDbContext db = new ApplicationDbContext();
// ...
return View();
}
该视图如下所示:
@using (Html.BeginForm("UrunEkleCicek","EkleCikart", FormMethod.Post ,new{enctype="multipart/form-data" }))
{
@Html.AntiForgeryToken();
@Html.DropDownList("CicekListesi", null, "Çiçek türü seçin", new { @class = "form-control"})*@
<input type="submit" value="Ürünü Ekle" class="btn btn-success" />
}
我怎样才能解决这个问题?
最佳答案
MVC不是WebForms,MVC不会保留页面的任何状态。
您已经在GET操作方法中正确设置了下拉菜单的数据:
ViewData["CicekListesi"] = new SelectList(db.CicekTuru, "cicekID", "cicekAdi");
好吧,“适当地”,您宁愿为此使用视图模型,但是上面的方法同样适用。
现在,当您发布此数据时,出了点问题,您显然想再次显示该表单。然后,表单再次需要
SelectList
数据才能正确显示。因此,只需在POST操作方法中重复上述代码即可。