DataBinding: "System.Web.Mvc.SelectListItem" не содержит свойства с именем "CategoryTypeID"

Я использую MVC. Я хочу передать данные категории, которые я ввел из своего представления, и передал свой пост /Createcontroller, но это не позволяет мне передать мой идентификатор категорииType, который я выбрал из своего раскрывающегося списка.

Вот ошибка:

DataBinding: "System.Web.Mvc.SelectListItem" не содержит свойства с именем "CategoryTypeID".

Вот мой код:

My CreateController:
//
        // POST: /Category/Create

        [HttpPost]
        public ActionResult Create(Category category)
        {
            if (ModelState.IsValid)
            {
                db.Categories.Add(category);
                db.SaveChanges();
                return RedirectToAction("Index");
            }


            ViewBag.CategoryTypes = new SelectList(db.CategoryTypes, "CategoryTypeID", "Name", category.CategoryTypeID);

            return View(category);
        }
My Create View
@model Haykal.Models.Category




<div class="editor-label">
            @Html.LabelFor(model => model.CategoryTypeID, "CategoryType")
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.CategoryTypeID,
            new SelectList(ViewBag.CategoryTypes as System.Collections.IEnumerable, "CategoryTypeID", "Name"),
          "--select Category Type --", new { id = "categoryType" })
            @Html.ValidationMessageFor(model => model.CategoryTypeID)
        </div>

Ответ 1

Я столкнулся с этой ошибкой. Я привязывал объект View Model:

editPanelViewModel.Panel = new SelectList(panels, "PanelId", "PanelName");

В представлении я создал ListBox следующим образом:

@Html.ListBoxFor(m => m.Panel, new SelectList(Model.Panel, "PanelId", "PanelName"))

Это должно быть так:

@Html.ListBoxFor(m => m.Panel, new SelectList(Model.Panel, "Value", "Text"))

Ответ 2

Вы определяете свой SelectList дважды, как в своем контроллере, так и в своем представлении.

Сохраняйте представление в чистоте. В вашем случае будет достаточно следующего: @Html.DropDownListFor(model => model.CategoryTypeID, (SelectList)ViewBag.CategoryTypes)

Я должен признать, что DropDownListFor довольно запутан в начале:)