2010-05-12 8 views
3

Comment puis-je obtenir un résultat IGrouping pour mapper à la vue?linq groupby en MVC fortement typé Voir

J'ai cette requête:

var groupedManuals = manuals.GroupBy(c => c.Series); 
return View(groupedManuals); 

Quelle est la cartographie appropriée pour la déclaration ViewPage?

Inherits="System.Web.Mvc.ViewPage<IEnumerable<ProductManual>>" 

Répondre

4

Je suis encore aux premiers stades de l'apprentissage Linq donc je peux me tromper, mais je pense que ce ViewPage devra être quelque chose comme

Inherits="System.Web.Mvc.ViewPage<IEnumerable<IGrouping<Series, Manual>>> 
+0

C'était tout. pour une raison quelconque, je ne pouvais pas sortir ça de ma tête. – jason

0

La vue doit être le même type de page. Vous devez convertir la sortie au même type que celui utilisé par votre page de vue.

Vous pouvez également utiliser un ViewData["Products"] pour définir les informations de collecte que vous souhaitez afficher sur votre page View aspx.

3

Dans le cas d'aider les autres. C'est ce que je tentais d'accomplir.

Le code d'action

var groupedManuals = manuals.GroupBy(c => c.Series); 
return View(groupedManuals); 

The View

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<IGrouping<string, ProductManualModel>>>" %> 
<% foreach (var item in Model) 
      { %> 
     <div class="manual-category"> 
      <h5> 
       <%= Html.Encode(item.Key) %> Series</h5> 
      <ul> 
       <% foreach (var m in item) 
        { %> 
       <li><a href="<%=Url.ManualLink(m.Id) %>" class="model-manuals"> 
        <%= m.Id %></a> </li> 
       <% } %> 
      </ul> 
    </div> 

IGrouping est une liste de listes pour ainsi dire. Avec la "clé" étant la propriété groupée dans la liste source.

Questions connexes