こんにちは。
ASP.NET Coreについて初学者なので拙いところもあると思いますが、よろしくお願いします。
実現したいこと
ASP.NET Coreにおいて、複数のModelをまとめるViewModel内の1つのModelに対してGroupByを使った際、Viewへの返し方がわかりません。
実現したいことは、AListと、BListをGroupByしたもの、2つのModelをViewModelとして1つのViewに表示させることです。
ソースコード
以下ViewModelのModelとControllerです。
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5 6 7namespace SampleProject.Models 8{ 9 public class SampleViewModel 10 11 { 12 public IEnumerable<AList> ALists { get; set; } 13 public IEnumerable<BList> BLists { get; set; } 14 } 15} 16
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5using Microsoft.AspNetCore.Mvc; 6using Microsoft.EntityFrameworkCore; 7using SampleProject.Data; 8using SampleProject.Models; 9 10namespace SampleProject.Controllers 11{ 12 public class SampleViewModelsController : Controller 13 { 14 15 private readonly MyDbContext _context; 16 17 public SampleViewModelsController(MyDbContext context) 18 { 19 _context = context; 20 } 21 22 public async Task<IActionResult> Index() 23 { 24 SampleViewModel myView = new SampleViewModel(); 25 myView.ALists = await _context.ALists.ToListAsync(); 26 myView.BLists = await _context.BLists.GroupBy(x => x.Kind).ToListAsync(); 27//型 'System.Collections.Generic.List<System.Linq.IGrouping<string, SampleProject.Models.BList>>' を 'System.Collections.Generic.IEnumerable<SampleProject.Models.BList>' に暗黙的に変換できません。明示的な変換が存在します (キャストが不足していないかどうかを確認してください) 28 29 return View(myView); 30 } 31 } 32} 33
わからないこと
View側でGroup化されたデータをforeachで処理したいので、
SampleViewModelのView側1行目にあるModelのImport部分も
@model DBAccessSample.Models.SampleViewModel
ではなく
@model IEnumerable<IGrouping <string,SampleProject.Models.SampleViewModel>>
にするべきなのでしょうが、AListが含まれているせいで
IGrouping<string, SampleViewModel>' に 'ALists' の定義が含まれておらず、型 'IGrouping<string, SampleViewModel>' の最初の引数を受け付けるアクセス可能な拡張メソッド 'ALists' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないかを確認してください。
というエラーが出ます。
エラー文からControllerで型変換するべきなのは理解していますが、その際にやりたい処理を実現できるのか、またView側でどう受け取ればいいのかについてがわかりません。
よろしくお願いします。
補足情報
Visual Studio 2017 Community
Microsoft.AspNetCore.All 2.2.8
Windows10 Pro 1909
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/08 02:51
退会済みユーザー
2020/12/08 04:03 編集
2020/12/08 05:30
退会済みユーザー
2020/12/08 05:59