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コントローラーとビューで2回定義しています。

ビューをきれいに保ちます。あなたの場合、次のようにすれば十分です。 @Html.DropDownListFor(model => model.CategoryTypeID, (SelectList)ViewBag.CategoryTypes)

DropDownListForが最初はかなり混乱していることを認めなければなりません:)

于 2012-04-29T08:42:27.747 に答える