Я создаю таблицу, в которой будут отображаться определенные столбцы из моей SQL базы данных. Я получаю сообщение об ошибке
InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'System.Collections.Generic.List, but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable
Я попытался запустить необработанный запрос sql (с использованием .FromSqlRaw), но, на мой взгляд, он возвращает нулевое значение модели. Я понимаю ошибку и что установка моего запроса в список и возврат IEnumerable невозможны, но я не нашел успеха в Интернете. Пожалуйста, дайте мне знать, что я могу улучшить. Спасибо!
My View
@model IEnumerable<MyApp.Models.BookModel>
<table>
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.BookName)
</th>
<th>
@Html.DisplayNameFor(model => model.Author)
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.BookName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Author)
</td>
</tr>
}
</tbody>
</table>
My Controller
[HttpGet("[action]")]
[Route("/Books/Index")]
public async Task<IActionResult> Index()
{
try
{
var data = _context.BookModel
.Where(x => x.Id == 10)
.Select(x => new { x.BookName, x.Author })
.AsNoTracking()
.ToListAsync();
return View(await data);
}
catch (Exception)
{
throw;
}
}
Боковое примечание: установка id = 10 для целей тестирования.