2012-04-20 39 views
10

Tôi đang sử dụng MVC. Tôi muốn chuyển dữ liệu danh mục mà tôi đã nhập từ chế độ xem của mình và được chuyển tới Bài đăng/Bộ tạo đối tượng của tôi, nhưng nó không cho phép tôi chuyển loại categoryTypeID mà tôi đã chọn từ danh sách thả xuống của mình.DataBinding: 'System.Web.Mvc.SelectListItem' không chứa thuộc tính có tên 'CategoryTypeID'

Dưới đây là lỗi:

DataBinding: 'System.Web.Mvc.SelectListItem' không chứa một tài sản với tên 'CategoryTypeID'.

Đây là mã của tôi:

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> 

Trả lời

10

Bạn đang xác định bạn SelectList hai lần, trong điều khiển của bạn cũng như theo quan điểm của bạn.

Giữ chế độ xem sạch sẽ. Chỉ cần những điều sau đây sẽ là đủ trong trường hợp của bạn: @Html.DropDownListFor(model => model.CategoryTypeID, (SelectList)ViewBag.CategoryTypes)

Tôi phải thừa nhận rằng DropDownListFor là khá khó hiểu trong đầu :)

+0

+ 1. Thật vậy, tôi đã định nghĩa SelectList hai lần. Lời giải thích của bạn hoàn toàn giải quyết được vấn đề của tôi. Bây giờ, tại sao thông báo lỗi không thực sự nói điều đó? Tôi đã có lỗi tương tự: DataBinding: 'System.Web.Mvc.SelectListItem' không chứa thuộc tính có tên 'Id'. Các thông báo lỗi là một số loại gây hiểu lầm, bạn không nghĩ? – AuroMetal

21

tôi phải đối mặt với lỗi này. Tôi đã gắn một đối tượng của Xem mẫu:

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

Trong View, tôi đã tạo ListBox như thế này:

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

Nó phải là như thế này trong thực tế:

@Html.ListBoxFor(m => m.Panel, new SelectList(Model.Panel, "Value", "Text")) 
Các vấn đề liên quan