Voici le problème. Je reçois IEnumerable de ViewPage et lorsque je l'ai essayé pour convertir la liste, il affiche une erreur comme:
'
System.Collections.Generic.IEnumerable<Pax_Detail>
'ne contient pas de définition pour' ToList 'et aucune méthode d'extension' ToList 'n'accepte un premier argument de type'System.Collections.Generic.IEnumerable<Pax_Detail>
'pourrait être trouvé (il vous manque une directive using ou une référence Assembly?)
Voici mon code de contrôleur:
[HttpPost]
public ActionResult Edit_Booking(Booking model, IEnumerable<Pax_Detail> pax)
{
List<Pax_Detail> paxList = new List<Pax_Detail>();
paxList = pax.ToList(); //getting error here
BookingDL.Update_Booking(model, paxList);
return View();
}
J'ai appliqué la même logique sur un autre contrôleur. Et ça marche bien. Je ne sais pas quel problème il a. J'ai déjà nettoyé, reconstruit le projet et j'ai également redémarré mon ordinateur portable (même s'il était nécessaire).
Vous manque-t-il une directive using pour System.Linq
?
Il vous manque une référence à System.Linq.
Ajouter
using System.Linq
pour accéder à la fonction ToList () sur le fichier de code actuel.
Pour donner un peu d'informations sur la raison pour laquelle cela est nécessaire, Enumerable.ToList<TSource>
est une méthode d'extension. Les méthodes d'extension sont définies en dehors de la classe d'origine ciblée. Dans ce cas, la méthode d'extension est définie sur System.Linq
espace de noms.
Une alternative à l’ajout de LINQ serait d’utiliser ce code à la place:
List<Pax_Detail> paxList = new List<Pax_Detail>(pax);
Il me manquait référence de System.Data.Entity dll et le problème a été résolu
Dans mon cas, j'avais copié du code d'un autre projet qui utilisait Automapper - cela m'a pris énormément de travail. Il suffisait d’ajouter le paquet automapper nuget au projet.