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 довольно запутан в начале:)