2012-04-20 13 views
10

मैं एमवीसी का उपयोग कर रहा हूं। मैं अपने दृश्य से दर्ज किए गए श्रेणी डेटा को पास करना चाहता हूं और मेरे पोस्ट/Createcontroller को पास कर चुका हूं, लेकिन यह मुझे मेरी श्रेणी टाइप करने की अनुमति नहीं दे रहा है जिसे मैंने अपनी ड्रॉपडाउन सूची से चुना है।डेटा बाइंडिंग: 'System.Web.Mvc.SelectListItem' में 'Category टाइप टाइप' नाम के साथ कोई संपत्ति नहीं है

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> 

उत्तर

10

आप को परिभाषित कर रहे अपने SelectList दो बार, अपने नियंत्रक में और साथ ही अपने ध्यान में रखते हुए।

दृश्य को साफ़ रखें। बस निम्नलिखित आपके मामले में पर्याप्त होगा: @Html.DropDownListFor(model => model.CategoryTypeID, (SelectList)ViewBag.CategoryTypes)

मैं स्वीकार करने के लिए कि DropDownListFor मैं इस त्रुटि का सामना करना पड़ा शुरुआत :)

+0

+ 1। दरअसल, मैंने चयन सूची को दो बार परिभाषित किया है। आपकी व्याख्या ने मेरी समस्या को हल किया। अब, त्रुटि संदेश वास्तव में ऐसा क्यों नहीं कहता है? मुझे समान त्रुटि मिली है: डेटा बाइंडिंग: 'System.Web.Mvc.SelectListItem' में 'Id' नाम वाली कोई संपत्ति नहीं है। त्रुटि संदेश कुछ प्रकार का भ्रामक है, क्या आपको नहीं लगता? – AuroMetal

21

में काफी भ्रमित है। मैं दृश्य मॉडल की एक वस्तु बाध्यकारी था:

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

यह वास्तव में इस तरह होना चाहिए:

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

देखें में, मैं इस तरह ListBox बनाया

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