2010-05-12 56 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是一個列表的列表可以這麼說。 「密鑰」是源列表中的分組屬性。