Le dépannage de l'élément "Modèle passé dans le dictionnaire est de type x mais nécessite une erreur Y" dans ASP.NET MVC
Cette erreur MVC ASP.NET courante, "L'élément de modèle transmis dans le dictionnaire est de type 'X', mais ce dictionnaire nécessite un modèle de type de type '," indique un décalage de type entre le modèle attendu de votre vue et le modèle attendu de votre vue et le modèle Données réelles du modèle envoyé par votre contrôleur.
Causes et solutions racines:
Le problème découle généralement de ces scénarios:
Contrôle de la visualisation du contrôleur: Le modèle retourné de l'action du contrôleur doit correspondre avec précision à la directive @model
à votre avis. L'utilisation de types anonymes ou de collections incorrectes est un coupable fréquent.
Exemple:
<code class="language-csharp">// Incorrect: Anonymous type returned var model = db.Foos.Select(x => new { ID = x.ID, Name = x.Name }); return View(model); // Error if view expects @model Foo</code>
<code class="language-csharp">var model = db.Foos.ToList(); // Or a single Foo object if needed return View(model);</code>
Conflits de modèle de vue partiel: Lorsque vous utilisez des vues partielles avec un modèle de vue principale complexe, la vue partielle peut hériter de l'incorrection du modèle principal.
Exemple: La vue principale utilise @model Foo
, la vue partielle utilise @model Bar
.
Solution: Passez explicitement le modèle correct à la vue partielle:
<code class="language-csharp">@Html.Partial("_BarPartial", Model.BarProperty)</code>
Déclaration de modèles de mise en page: Si votre fichier de mise en page déclare un modèle, toutes les vues utilisant cette disposition doivent également déclarer un modèle compatible (le même type ou un type dérivé).
@Html.Action()
avec une méthode [ChildActionOnly]
pour rendre des vues partielles avec des modèles séparés dans votre disposition. En bref, la résolution de cette erreur nécessite une vérification soigneusement vérifiée que le type de modèle passé de votre contrôleur correspond précisément au type déclaré en utilisant la directive @model
dans votre vue, et que les vues partielles reçoivent les objets de modèle corrects. Portez une attention particulière aux types anonymes et aux déclarations de modèle dans les dispositions.
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!