Artikel ini menerangkan bagaimana untuk memperbaiki ralat "item viewData untuk 'kategori' mestilah jenis 'iEnumerable'" dalam ASP.NET MVC. Kesilapan timbul kerana penurunan dropdownlistfor mengharapkan IEnumerable
(biasanya koleksi objek SelectListItem
) untuk item viewData CategoryID
, tetapi ia menerima int
sebaliknya. Ini biasanya berlaku apabila data untuk senarai dropdown tidak diisi dengan betul semasa permintaan pos.
dalam model pandangan CategoryList
, yang membekalkan data ke dropdown, tidak disegarkan semula dalam kaedah pos tindakan ProjectVM
. Penyelesaiannya adalah untuk repopulate Create
dalam kaedah pos CategoryList
. Create
: Create
<code class="language-csharp">public ActionResult Create(ProjectVM model) { if (!ModelState.IsValid) { // Repopulate the CategoryList property model.CategoryList = new SelectList(db.Categories, "ID", "Name"); return View(model); } // ... (Your existing code to save the project) ... }</code>
di dalam blok model.CategoryList = new SelectList(db.Categories, "ID", "Name");
, if (!ModelState.IsValid)
dengan betul dihuni dengan data dari jadual CategoryList
(dengan asumsi Categories
adalah konteks pangkalan data anda), menyediakan db
yang diperlukan untuk IEnumerable<SelectListItem>
pembantu. Ini menghalang ketidakcocokan jenis dan membolehkan penyerahan bentuk yang berjaya. Pembina DropDownListFor
mengambil sumber data, medan nilai ("id"), dan medan teks ("nama"). Ini memastikan dropdown memaparkan nama dan nilai kategori yang betul. SelectList
Atas ialah kandungan terperinci Kenapa item viewdata 'kategoriId' saya menyebabkan 'item viewdata yang mempunyai 'kategoriId' kunci adalah jenis 'sistem.int32' tetapi mestilah jenis 'ienumerable'.' Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!