The ViewData item that has the key 'CategoryId' is of type 'System.Int32' but should be of type 'IEnumerableSelectListItem'

0

When I create a new subcategory I have the following error:

  

The ViewData item that has the key 'CategoryId' is of type 'System.Int32' but should be of type 'IEnumerable'.

Classes you are using:

    public class SubCategory
    {
        [Key]
        [Display(Name = "SubCategoria Id")]
        public int SubCategoryId { get; set; }

        [MaxLength(50, ErrorMessage = "O campo Sub-Categoria recebe no máximo 50 caracteres")]
        [Index("SubCategory_Category_Description_Index",2, IsUnique = true)]
        [Required(ErrorMessage = "O campo {0} é requerido!!")]
        [Display(Name = "Sub-Categoria")]
        public string Description { get; set; }

        [Required(ErrorMessage = "O campo Categoria é requerido!!")]
        [Index("SubCategory_Category_Description_Index", 1, IsUnique = true)]
        [Range(1, double.MaxValue, ErrorMessage = "Selecione a Categoria")]
        [Display(Name = "Categoria")]
        public int CategoryId { get; set; }

        public virtual Category Category { get; set; }

        public virtual ICollection<Classification> Classifications { get; set; }

        public virtual ICollection<Medicament> Medicaments { get; set; }
    }



    // GET: SubCategories/Create
        public ActionResult Create()
        {
            ViewBag.CategoryId = new SelectList(ComboHelper.GetCategories(), "CategoryId", "Description");
            return View();
        }

        // POST: SubCategories/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(SubCategory subCategory)
        {
            if (ModelState.IsValid)
            {
                db.SubCategories.Add(subCategory);
                try
                {
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch (System.Exception ex)
                {

                    if (ex.InnerException != null &&
                        ex.InnerException.InnerException != null &&
                        ex.InnerException.InnerException.Message.Contains("_Index"))
                    {
                        ModelState.AddModelError(string.Empty, "Não é possível inserir duas Subcategorias com o mesmo nome!");
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, ex.Message);
                    }


                    return View(subCategory);
                }
            }
            ViewBag.CategoryId = new SelectList(ComboHelper.GetCategories(), "CategoryId", "Description");

            return View(subCategory);
        }

    @model SIG_HP.Models.SubCategory

        @{
        ViewBag.Title = "Create";
    }
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
    <div class="form-horizontal">
        <h4>SubCategory</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.CategoryId, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(m => m.CategoryId, (SelectList)ViewBag.CargoId)
                @Html.ValidationMessageFor(model => model.CategoryId, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
    
asked by anonymous 01.07.2018 / 21:12

0 answers