2017-11-18 13 views
0

私のビューに匿名型を送信しようとしています。匿名型は、次のように構成されてASP.NETコアで表示する匿名タイプ(リスト)を送信

public async Task<IActionResult> Historial() 
    { 
     return View(await _context.HechosLiquidador 
      .Select(c => new { Store = c.StoreID, LiqDate = c.FechaLFinLiq}).Distinct() 
      .AsNoTracking().OrderBy(s => s.LiqDate).ToListAsync()); 
    } 

この場合の特殊性は、クエリの結果は、項目のリストであるということです。これをビューにどのように渡すことができますか?

ViewModelを作成する必要がありますか?その場合、このクエリの結果をそのビューモデルに代入するにはどうすればよいですか?

答えて

0

私のソリューションは、ViewModelの方法で行く場合です。

のViewModelを定義します。

我々は最初、我々が一覧表示する項目は、その後、それらの項目を含むオブジェクトを通して反復取得し、1つずつそれらを追加します:コントローラで

public class HistorialIndexData 
{ 
    public string StoreName { get; set; } 

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime FechaLFinLiq { get; set; } 
} 

をViewModelオブジェクトを作成し、新しいリストを作成します。

public async Task<IActionResult> Historial() 
    { 
     List<HistorialIndexData> newHistorial = new List<HistorialIndexData>(); 
     var items = await _context.HechosLiquidador.Include(s => s.Stores) 
      .Select(c => new { Store = c.Stores.StoreName, LiqDate = c.FechaLFinLiq }).Distinct() 
      .AsNoTracking().OrderBy(s => s.LiqDate).ToListAsync(); 

     foreach(var itemtolist in items) 
     { 
      HistorialIndexData info = new HistorialIndexData 
      { 
       StoreName = itemtolist.Store, 
       FechaLFinLiq = itemtolist.LiqDate 
      }; 
      newHistorial.Add(info); 
     } 

     return View(newHistorial); 
    } 

新しいViewModelのリストを使用するようにビューを更新します。

@model List<Application.Models.ApplicationviewModels.HistorialIndexData> 

完了!

関連する問題