2010-05-12 59 views
3

如何获得IGrouping结果以映射到视图?linq groupby in strong typed MVC查看

我有这个疑问:

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

什么是对的ViewPage声明正确映射?

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

回答

4

我仍然在学习LINQ的,所以我可能是错的初期阶段,但我认为这的ViewPage将需要像

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

就是这样。无论出于何种原因,我都无法将它从我的脑海中解救出来。 – jason 2010-05-12 23:57:56

0

视图必须是同一类型的页。您必须将输出转换为您的视图页面使用的相同类型。

您也可以使用ViewData["Products"]来设置您希望在View aspx页面上可见的收集信息。

3

在帮助别人的情况下。这是我试图完成的。

动作代码

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

<%@ 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是一个列表的列表可以这么说。 “密钥”是源列表中的分组属性。