具有键“CategoryId”的ViewData项的类型为“System.Int32”,但必须是“IEnumerable <selectlistitem>”类型。</selectlistitem>

时间:2014-09-18 18:13:24

标签: c# ienumerable dropdownlistfor selectlistitem

你能帮忙解决下面的错误吗?我的代码出了什么问题。谢谢你的帮助。

错误:

具有键'CategoryId'的ViewData项的类型为'System.Int32',但必须是'IEnumerable'类型。

控制器

  public ActionResult ProductCreate()
    {
        ViewBag.Suppliers = db.Suppliers.Where(x => x.IsActive).ToList();
        ViewBag.Categories = new SelectList(db.Categories.Where(x => x.IsActive).ToList(), "Id", "Name").ToList();
        return View();
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ProductCreate(Product product, int[] suppliers)
    {
        if (ModelState.IsValid)
        {
            foreach (int SupplierId in suppliers)
            {
                product.Suppliers.Add(db.Suppliers.Find(SupplierId));
            }
            db.Products.Add(product);
            db.SaveChanges();
            return RedirectToAction("ProductIndex");
        }

        return View(product);

视图:

  @(Html.DropDownListFor(x => x.CategoryId, (IEnumerable<SelectListItem>)ViewBag.Categories))
                <br />
                @Html.ValidationMessageFor(x => x.CategoryId)

1 个答案:

答案 0 :(得分:1)

我刚刚在创建的后期动作中填充了viewbag,它就解决了。