我遇到一个问题,就是我的控制器未返回页面模型期望的类型。
我的控制器返回以下类型:
IEnumerable<List<GameSession>> grouped
我的页面期望使用以下类型的模型:
IEnumerable<EFGameManager.Models.GameSession>
问题是无论我如何尝试,我都无法将两者匹配。
这是错误:
处理请求时发生未处理的异常。 InvalidOperationException:模型项传递到 ViewDataDictionary是类型 'System.Linq.Enumerable + SelectEnumerableIterator
2[System.Linq.IGrouping
2 [System.Int32,EFGameManager.Models.GameList.GameSession],System.Collections.Generic.List1[EFGameManager.Models.GameList.GameSession]]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable
1 [EFGameManager.Models.GameList.GameSession] '。 Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(object 值)
这是页面期望的模型:
Index.cshtml:
@model IEnumerable<EFGameManager.Models.GameSession>
这是控制器:
public async Task<IActionResult> Index(DateTime start, DateTime end)
{
var eventGames = await _context.GameList
.Where(m => m.GameCatalogId != null).ToListAsync();
var eventPlayers = await _context.PlayerList
.Where(p => p.PlayerType == 2).ToListAsync();
var query = from pl in eventPages
join ml in eventGames on fl.GameId equals ml.GameId
select new GameSession
{
Id = pl.ListingId,
GameId = ml.GameId,
SessionGameName = ml.GameDisplayName,
SessionEventName = pl.ListingDisplayName,
SessionStartTime = pl.PlayerStartTime,
SessionEndTime = pl.PlayerEndTime
};
var orderedResults = query
.OrderBy(n => n.SessionGameName)
.ThenBy(d => d.SessionDate)
.ThenBy(t => t.SessionStartTime).ToList();
var ts = TimeSpan.FromMinutes(30);
var grouped = orderedResults
.OrderBy(r => r.GameId)
.ThenBy(r => r.SessionDate)
.ThenBy(r => r.SessionStartTime)
.GroupByWhile((p, n) => p.SessionDate.Value.Date == n.SessionDate.Value.Date
&& n.SessionStartTime - p.SessionEndTime < ts)
.Select(rg => rg.ToList());
return View(grouped);
}
我尝试了很多事情,但遇到了新的错误或此错误的某些变化。
任何见识将不胜感激!