2014-09-18 6 views
1

Помогите с ошибкой внизу. Что не так с моими кодами. Спасибо за вашу помощь.Элемент ViewData, который имеет ключ «CategoryId», имеет тип «System.Int32», но должен иметь тип «IEnumerable <SelectListItem>».

Ошибка:

ViewData элемент, который имеет ключ «CategoryId» имеет тип «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) 
+0

звучит как дублированный вопрос, проверьте это, чтобы убедиться, что http://stackoverflow.com/questions/23293042/mvc-error-is-of-type-system-int32-but-must-be-of-type-ienumerableselectlist – MethodMan

ответ

1

Я просто заселена viewbag снова в действии после создания, и она решается.