Cet article explique comment corriger l'erreur "L'article ViewData pour 'catégorieid' doit être de type 'ienumerable'" dans ASP.NET MVC. L'erreur survient parce qu'une aide DropdownListFor s'attend à un IEnumerable
(généralement une collection d'objets SelectListItem
) pour l'élément CategoryID
ViewData, mais il reçoit à la place un int
. Cela se produit généralement lorsque les données de la liste déroulante ne sont pas correctement remplies lors d'une demande de poste.
Le problème de base est que la propriété CategoryList
dans le modèle de vue ProjectVM
, qui fournit des données à la liste déroulante, n'est pas actualisée dans la méthode post-Action de l'action Create
. La solution consiste à repeupler CategoryList
dans la méthode Create
post.
Voici comment corriger la méthode d'action 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>
En ajoutant model.CategoryList = new SelectList(db.Categories, "ID", "Name");
à l'intérieur du bloc if (!ModelState.IsValid)
, le CategoryList
est correctement rempli de données du tableau Categories
(en supposant que db
est votre contexte de base de données), fournissant le IEnumerable<SelectListItem>
nécessaire au DropDownListFor
assistant. Cela empêche l'inadéquation de type et permet une soumission de formulaire réussie. Le constructeur SelectList
prend la source de données, le champ de valeur ("id") et le champ de texte ("nom"). Cela garantit que la liste déroulante affiche les noms et valeurs de catégorie corrects.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!