2017-04-20 243 views
0

我在剃刀視圖使用動態列表(匿名對象),並顯示它。顯示列表<dynamic>用剃刀

控制器代碼:

var res = (from c in _context.DM_Suivi_Us_Servis 
         group c by new { c.designation_magasin,c.designation_uf} into g 
         select new 
         { 
          g.Key.designation_magasin, 
          g.Key.designation_uf, 
          sum = g.Sum(c => c.nbr_us_servis), 
         }).ToList(); 

return View(res); 

查看頁面(Razor視圖):

@model IEnumerable<dynamic> 
@foreach (var item in Model) 
{ 
    <tr> 
     <td>@item.ToString()</td> 
    </tr> 
} 

顯示此結果:

 
{ designation_magasin = CO3, designation_uf = NRG, sum = 65 } 
{ designation_magasin = INC, designation_uf = NRG, sum = 0 } etc.. 

但是,當我嘗試顯示每個項目屬性:

@foreach (var item in Model) 
{ 
    <tr> 
     <td>@item.sum</td> 
     <td>@item.designation_uf</td> 
     <td>@item.designation_magasin</td> 
    </tr> 
} 

我收到此以下錯誤

Error Screenshot

+1

使用這3個屬性創建視圖模型,並將您的查詢投影到視圖模型的集合中,並將視圖模型返回到視圖 –

+5

只需創建視圖模型,不要懶惰 – Milney

+0

嗨,謝謝你回答我已經嘗試創建一個新的ViewModel,但我會經常使用這種方法與不同的ViewModel,所以我認爲最好使用Anonymose對象。 –

回答

0

創建新的視圖模型:

public class YourName 
{ 
    public string DesignationMagasin { get; set; } 
    public string DesignationUf { get; set; } 
    public int SumServis { get; set; } 
} 

並使用投影

var res = (from c in _context.DM_Suivi_Us_Servis 
      group c by new { c.designation_magasin, c.designation_uf } into g 
      select new YourName 
      { 
       DesignationMagasin= g.Key.designation_magasin, 
       DesignationUf= g.Key.designation_uf, 
       SumServis= g.Sum(c => c.nbr_us_servis), 
      }).ToList(); 

在視圖中添加@model List<YourName>

Here您找到更多關於MVC。

+0

您好,感謝您的回答它的工作100%,但我會使用很多的ViewModels的所以最好使用Anonymose類型? –