добрый вечер всем. Сначала я работаю над проектом электронного обучения. к проблеме.
У меня есть класс Course
с IEnumerable<Modules>
и класс Module
с IEnumerable<Topics>
. В настоящее время, когда пользователь нажимает на любой из курсов в представлении, он открывает представление CourseDetail
. Это представление предназначено для отображения подробных сведений о Course
для пользователя. Как и все модули, и при щелчке по модулю я хочу раскрывающийся список всех тем в каждом модуле.
Здесь я и нахожусь найти это действительно сложно. Я мог бы получить все Modules
для курса, но мне трудно собрать ToList()
все темы для каждого модуля. Так что, когда пользователь нажимает на модуль, он открывает внутренний div, в котором перечислены все темы.
[AllowAnonymous]
public async Task<IActionResult> CourseDetail(int id)
{
var course = _context.Courses.FirstOrDefault(c => c.CourseId == id);
var courseId = course.CourseId;
var video = _context.Topic.Include(m => m.Modules).Where(m => m.Modules.CourseId == courseId).Sum(m => m.Duration);
float totalSeconds = video;
TimeSpan time = TimeSpan.FromSeconds(totalSeconds);
var duration = time.ToString("hh':'mm':'ss"); // 00:03:48
var moduleCount = _context.Modules.Where(c => c.CourseId == courseId).Count();
var courseModules = await _context.Modules.Where(c => c.CourseId == courseId).ToListAsync();
foreach (var module in courseModules)
{
var moduleId = module.ModuleId;
var moduleTopics = _context.Topic.Where(c => c.ModuleId == moduleId).ToList();
ViewBag.moduleTopics = moduleTopics;
}
return View(course);
}
Это то, что я сделал. и мой взгляд выглядит следующим образом
<div id="accordion_lessons" role="tablist" class="add_bottom_45">
@foreach (var module in ViewBag.Modules)
{
<div class="card">
<div class="card-header" role="tab" id="headingOne_@module.ModuleId">
<h5 class="mb-0">
<a data-toggle="collapse" href="#collapseOne_@module.ModuleId" aria-expanded="true" aria-controls="collapseOne"><i class="indicator ti-minus"></i>@Html.Raw(module.Title)</a>
</h5>
</div>
<div id="collapseOne_@module.ModuleId" class="collapse show" role="tabpanel" aria-labelledby="headingOne" data-parent="#accordion_lessons">
<div class="card-body">
<div class="list_lessons">
<ul>
@foreach (var topic in ViewBag.moduleTopics)
{
<li><a href="#" class="video">@topic.Title</a><span>@topic.Duration</span></li>
}
</ul>
</div>
</div>
</div>
</div>
}
</div>
Я понял, что Viewbag.ModuleTopics
содержит только список топи c для последнего элемента ie Module
, который я перебираю через foreach
Скажите, пожалуйста, насколько возможно я могу составить список модулей курса, и по щелчку любого модуля он показывает внутренний блок, в котором перечислены темы. спасибо