У меня проблема с тем, что мой контроллер не возвращает тип, который ожидает моя модель страницы.
Мой контроллер возвращает тип:
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.List 1[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 (объект
значение)
Вот модель, которую ожидает страница:
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);
}
Я пробовал несколько вещей, и я получаю новую ошибку или какой-то вариант этой ошибки.
Любое понимание будет с благодарностью!