2013-10-04 1 views
0

Je veux passer les résultats d'une requête (JSON) d'un contrôleur à une vue partielle, c'est pourquoi j'ai créé un typer comme suit:Impossible de convertir le type AnonymousType?

public class Suivi_Client 
{ 
    public string ClientID { get; set; } 
    public string Activite { get; set; } 
    public string ClientName { get; set; } 
} 

// list 
public class Suivis 
{ 
    public List<Suivi_Client> List_Clients { set; get; } 
} 

Ensuite, la vue partielle:

@model IEnumerable<Project.Models.Suivi_Client> 
<html> 
    <body> 
<table border=1> 
<thead> 
    <tr> 
    <th> 
    ID 
    </th> 
    <th> 
    Name 
    </th> 
     <th> 
    Activite 
    </th> 
    </tr> 
</thead> 
@foreach(var item in Model){ 
foreach (var pop in item.List_Clients) 
{ 
<tr> 
    <td > 
     @Html.DisplayFor(modelItem => pop.ClientID) 
    </td> 
    < <td > 
     @Html.DisplayFor(modelItem => pop.ClientName) 
    </td> 
    <td > 
     @Html.DisplayFor(modelItem => pop.Activite) 
    </td> 

</tr> 
} 
} 
</table> 
    </body> 
    </html> 

est la méthode d'action ici:

public ActionResult Partial_suivi(string clients) 
     { 
     IEnumerable<Suivis> PopModel; 
       var activit = (from x in frh.productivites 
         join y in frh.Clients on x.action equals y.ClientName 
         where x.action.Equals(clients) 
         select new { x.actionID,x.Activité,y.ClientName,y.Responsable,y.TempsCible,x.tempsmoy_ }).Distinct().ToArray(); 
     PopModel = activit; 
      return PartialView(PopModel); 
     } 

mais je cette erreur: Impossible de convertir le type 'AnonymousType # 1 []' à « Project.Models.Suivis

comment puis-je résoudre cette erreur?

Répondre

0

Il y a quelques problèmes ici.

Dans votre méthode d'action, vous essayez de transmettre un IEnumerable<Suivis> à votre affichage. Mais votre vue attend un IEnumerable<Suivi_Client>.

Le problème suivant est que votre requête linq est select ing (transformant) en un objet anonyme, mais que vous essayez de le mettre dans un IEnumerable<Suivis>.

Je vais supposer que ce que vous voulez faire est de faire en sorte que votre requête linq soit sélectionnée dans un IEnumerable<Suivi_Client> afin que votre vue puisse faire son travail. Pour ce faire vous changer votre code à quelque chose de similaire à ce

IEnumerable<Suivi_Client> PopModel = (from x in frh.productivites 
             join y in frh.Clients on x.action equals y.ClientName 
             where x.Action.Equals(clients) 
             select new Suivi_Client 
             { 
              Activite = x.Activite, 
              ClientName = y.ClientName, 
              ClientID = ?? 
             }).Distinct(); 

return PartialView(PopModel); 

Il y a beaucoup d'inconnues à partir du code que vous avez fourni, et que vous utilisez des objets que vous ne vous présentez pas dans vos extraits de code. Si vous pouviez expliquer ce que vous voulez faire avec votre requête linq, je suis sûr que quelqu'un pourrait poster un exemple plus complet/meilleur de la façon de réaliser ce que vous recherchez.

Questions connexes