Есть 2 модели, пользователи и программы (в этом вопросе есть описание моделей). Я хочу отобразить в таблицах все программы из бд, и следом всех пользователей.
Сделал 1 контроллер с 2 экшанами и 2 view.
Context db = new Context();
public ActionResult Progs()
{
IEnumerable<Prog> progs = db.Progs;
ViewBag.Progs = progs;
return View();
}
public ActionResult Users()
{
IEnumerable<User> users = db.Users.Include(u => u.Prog);
return View(users);
}
<table class="table table-bordered">
<thead>
<tr>
<th>Номер строки</th>
<th>Название программы</th>
</tr>
</thead>
<tbody>
@foreach (var item in ViewBag.Progs)
{
<tr>
<th scope="row">@item.Id</th>
<td>@item.Name</td>
</tr>
}
</tbody>
</table>
@Html.Partial("Users");
@model IEnumerable<WebApplication3.Models.User>
<table class="table table-bordered">
<thead>
<tr>
<th>Номер строки</th>
<th>Название программы</th>
<th>Фамилия пользователя</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<th scope="row">@item.Id</th>
<td>@item.Surname</td>
<td>@item.Age</td>
<td>@item.Prog.Name</td>
</tr>
}
</tbody>
</table>
View User идёт как partial. И когда вызывается экшен контроллера для программ, отрисоваться должны и юзеры, но так как для юзеров данных нет, то и рисовать не из чего, ведь контроллер юзеров не трогается, как в таких случаях поступают? Пробова из экшена программ через ViewBag передавать ещё и юзеров для отрисовки, но не получилось. МОжет как то можно задействовать экшен юзеров в таком случае? Или это нужно сделать как то подругому? Подскажите пожалуйста, только начинаю изучать mvc.
У @Html.Partial() есть перегрузка, в которой можно указать данные, а не только имя представления.
Если вы хотите вывести все программы и для каждой указать всех пользователей этих программ, то вам нужно что-то в духе:
public ActionResult ProgsWithUsers()
{
IEnumerable<Prog> progs = db.Progs.Include(x => x.Users).ToArray();
return View(progs);
}
Во вью:
@model IEnumerable<WebApplication3.Models.Prog>
<table class="table table-bordered">
<thead>
<tr>
<th>Номер строки</th>
<th>Название программы</th>
<th>Пользователи</th>
</tr>
</thead>
<tbody>
@foreach (var program in Model)
{
<tr>
<th scope="row">@program.Id</th>
<td>@program.Name</td>
</tr>
@if(program.Users.Count() > 0)
{
<td>@Html.Partial("Users", program.Users)</td>
}
else
{
<td>–</td>
}
}
</tbody>
</table>
Ну и в partial view:
@model IEnumerable<WebApplication3.Models.User>
@foreach (var user in Model)
{
<div>@user.Surname</div>
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица со столбцом "Дата" формата 2018-03 в sql serverВвел в textBox год 2018 Как вывести в DataGridView все записи c таким годом?
Разрабатываю расширения для Chrome (Opera and Yandex)Появилась ошибка в консоли "popup
Привет!Нужно перенести проект созданный на react-create-app в Gatsbyjs но там разная структура файлов и нету файла сss