Как вывести список в представление по одному id?

у меня есть две таблицы. AT и ATD соединенные связью один ко многим.
по суть у меня есть один общий тест с характеристиками кто его делал и где(таблица АТ) и для несколько результатов (item) в таблице ATD.
я знаю как вывести детали, отредачить и удалить по ОДНОЙ строке.
например из контроллера:
public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
            var autoTestDetail = await _context.AutoTestDetails
                .Include(a => a.AutoTest)
             .FirstOrDefaultAsync(m => m.AutoTestId == id);
            if (autoTestDetail == null)
            {
                return NotFound();
            }

            return View(autoTestDetail);
        }


я хочу вывести список. то есть у меня есть условно ТЕСТ 1. я нажимаю на ссылку и меня перебрасывает на представление со списком foreach:
@foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Time)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Level)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Category)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Message)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.AutoTest.AutoTestId)
            </td>
            <td>
                <a asp-action="Details" asp-route-id="@item.AutoTestDetailId">Details</a> 
            </td>
        </tr>


я пыталась сделать так:
public async Task<IActionResult> ListDetails(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var autoTestDetail = await _context.AutoTestDetails
               .Include(a => a.AutoTest)
            .FirstOrDefaultAsync(m => m.AutoTestId == id);

            if (autoTestDetail == null)
            {
                return NotFound();
            }

            var dataBaseContext = _context.AutoTestDetails
                .Include(a => a.AutoTest);
            return View(await dataBaseContext.ToListAsync());
        }


то есть мне нужно чтобы произошло сравнение по айди и вывелись все строки ATD у которыйх айди например 1( передается при нажатии)

по примеру собрать не получислось. ответ найти не могу

если что переход у меня по такой ссылке
<a asp-action="ListDetails" asp-controller="AutoTestDetails" asp-route-id="@Model.AutoTestId">список items</a> |

может в ней как то надо добавить чтобы было AutoTestDetailsId(первичный ключ таблицы ATD. при нажатии на кнопку должен выводиться такой список items из таблицы ATD чтобы первычный и внешний ключ AT были равны.

кнопка находится в представлении AT и я не знаю как ее изменить чтобы, если необходимо, получить AutoTestDetailsId. тк так я могу только из ATD

когда я перехожу к списку Тестов и нажимаю на детали одного из них у меня такой путь:
https://localhost:44329/AutoTests/Details/id
где id это тот самый AutoTestId.

потом я нажимаю на кнопку выше и получаю
https://localhost:44329/AutoTestDetails/ListDetails/3

но выводятся мне и по id=3 и по остальным
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
NikFaraday
@NikFaraday
Student full-stack Developer
Попробуйте юзнуть .Where при выборке, куда передать лямбду с логическим условием, что бы проверить каждый элемент по внешнему ключу, подходит он или нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект