Maison > développement back-end > C++ > Pourquoi ma liste déroulante lance-t-elle une erreur 'System.int32' vs 'ienumerable'?

Pourquoi ma liste déroulante lance-t-elle une erreur 'System.int32' vs 'ienumerable'?

Susan Sarandon
Libérer: 2025-02-03 03:06:10
original
645 Les gens l'ont consulté

Why Does My Dropdown List Throw a

Dépannage "System.int32" vs erreurs "ienumable" dans les listes de chute

Soumettre un formulaire avec une liste déroulante peut parfois entraîner une erreur indiquant un type de type: L'article ViewData s'attend à un type IEnumerable (pour les options déroulantes), mais reçoit un System.Int32 à la place.

Cause profonde: Liste de catégorie nul

Cela se produit généralement parce que la propriété CategoryList dans votre modèle de vue (par exemple, ProjectVM) est null lorsque le formulaire est soumis. Le ViewData s'appuie sur cette propriété pour remplir la liste déroulante.

Solution: repeuplez la liste des catégories dans la méthode post

La solution consiste à repeupler explicitement la propriété CategoryList dans la méthode post-action de votre contrôleur avant renvoyant la vue. Cela garantit que les données IEnumerable correctes sont disponibles dans le ViewData.

Voici comment modifier votre méthode de message:

<code class="language-csharp">public ActionResult Create(ProjectVM model)
{
    if (!ModelState.IsValid)
    {
        // Repopulate the CategoryList
        model.CategoryList = new SelectList(db.Categories, "ID", "Name"); 
        return View(model);
    }
    // ... (Your existing code to save the model and redirect) ...
}</code>
Copier après la connexion

L'ajout de cette ligne recréent le SelectList et le affecte à model.CategoryList. Ceci, à son tour, fournit les données IEnumerable nécessaires à l'assistance DropDownListFor() à votre avis.

Comment cela fonctionne: ViewData et SelectList

La méthode d'assistance DropDownListFor() d'assistance (et DropDownList()) essaie de trouver les données SelectList appropriées. S'il ne reçoit pas directement un SelectList, il recherche des données dans ViewData en utilisant le nom de la propriété (comme «catégorieid»). Si l'élément ViewData n'est pas couvable à IEnumerable, l'erreur de décalage de type se produit. En définissant explicitement CategoryList dans la méthode post, nous contournons ce problème.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal