14

我正在使用 MVC。我想传递我从视图中输入的类别数据并传递给我的 Post/Createcontroller,但它不允许我传递我从下拉列表中选择的 categoryTypeID。

这是错误:

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>
4

2 回答 2

28

我遇到了这个错误。我正在绑定视图模型的对象:

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"))
于 2013-10-24T15:19:20.460 回答
13

SelectList在控制器和视图中定义了两次。

保持视野干净。在您的情况下,以下内容就足够了: @Html.DropDownListFor(model => model.CategoryTypeID, (SelectList)ViewBag.CategoryTypes)

我不得不承认,DropDownListFor 一开始就很混乱:)

于 2012-04-29T08:42:27.747 回答