MVC: Dictionnaire nécessite un élément de modèle de type "Système".Les Collections.Génériques.IEnumerable`1
J'obtiens cette erreur et je ne sais pas si je suis capable de le faire, voici mon code..
Contrôleur d'Application
public ActionResult AppView()
{
List<Application> apps;
using (ISiteDbContext context = _resolver.GetService<ISiteDbContext>())
{
apps = context.Applications.ToList();
}
return PartialView("AppView", apps.OrderBy(a => a.Name).ToList());
}
Rendu partiel - c'est à l'intérieur d'un point de vue qui est dans la maison contrôleur.
@{Html.RenderPartial("~/Views/Application/AppView.cshtml", new Example.Services.DAL.Application());}
et mon affichage de l'application
@model IEnumerable<Example.Services.DAL.Application>
@{
ViewBag.Title = "Applications";
}
<h2>Applications</h2>
<p>
@Html.ActionLink("Add New Application", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
message d'erreur complet:
L'élément de modèle adopté dans le dictionnaire est de type
'Exemple.Services.DAL.Application", mais cela nécessite un dictionnaire
l'élément de modèle de type
'Système.Les Collections.Génériques.IEnumerable`1[Exemple.Services.DAL.Demande]'.
Veuillez inclure le message d'erreur dans le corps de votre question. Le message d'erreur complet ne démarre pas avec des "mais"
le message d'erreur complet ajouté.
le message d'erreur complet ajouté.
OriginalL'auteur Zi_31 | 2014-12-09
Vous devez vous connecter pour publier un commentaire.
Que les états d'erreur vous êtes de passage d'un type incorrect. Changement
:
Wow super réponse! Il fonctionne, mais est-il normal qu'il ajoute automatiquement une nouvelle ligne à la liste quand il rend la vue partielle?
pas sûr si j'ai 100% de comprendre ta question, mais sur la base d'
AppView.cshtml
en question, il convient d'en ajouter une nouvelle ligne - vous passer de la collecte deApplication
et donne la liste de tous les articles (dans cet exemple c'est juste une ligne).Oh je vois..le code fonctionne, mais si je ne veux pas d'une nouvelle ligne pour être généré? Juste la table(si son vide, puis une table vide, mais si ce n'est pas vide, alors il sera de montrer toutes les lignes). Parce que j'ai un bouton ajouter pour ajouter une ligne.
Si vous parlez de la première ligne où
Html.DisplayNameFor(model => model.Name)
est, vous avez besoin d'envelopper toute latr
en@if (Model.Any()) { ... }
. Toutefois, si vous avez un code différent de votre vue partielle, je vous suggère la création de la question avec votre exemple.OriginalL'auteur Vladimirs
Votre
AppView.cshtml
est lier fortement le type de@model IEnumerable<Example.Services.DAL.Application>
et tout en appelant ce point de vue vous êtes de passage à@{Html.RenderPartial("~/Views/Application/AppView.cshtml", new Example.Services.DAL.Application());}
Il devrait être l'objet de la liste. Vous devez passer
list
deExample.Services.DAL.Application()
Changer votre
à
OriginalL'auteur Ajay P
votre code est à la recherche d'un Ienumerable parce que ce que vous transmettez à votre vue partielle doit être le même que ce qui est dans votre vue afin d'essayer de changer la première ligne de votre application en vue de
il a travaillé pour moi j'espère que c'était de bon usage pour vous 😀
OriginalL'auteur Tj Laubscher
Afin d'utiliser le tri sur une collection de (personnalisé) des Objets, vous avez besoin d'une méthode de tri. Habituellement, ceci est accompli par hériter de la "IComparable" de l'interface. Dans l'Objet de votre classe, vous avez alors besoin d'une méthode de "Comparer" pour déterminer la méthode de comparaison des instances de vos Objets de tri (j'utilise "Date" dans mon projet).
Pour récapituler:
Vous utilisez dans votre Demande d'emploi de Contrôleur:
Mais pour réellement (ou dans ce cas OrderBy), vous avez besoin d'une méthode dans votre "Application" de la classe qui compare les instances dans la liste à trier. Ceci est fait en utilisant la fonction "Comparer" la méthode:
Comment vous vous comparez est totalement à vous. Le résultat, cependant, est soit:
J'espère que cette aide. Bonne chance!
Cher ce qui concerne,
Björn
OriginalL'auteur Magicbjørn