My question is, is there a possibility with ASP.NET Core MVC to put all data from my database in a foreach
loop in different bootstrap cards with navigation?
I’ve already tried this and found that it works partially. But as soon as I click on a navigation tab from the second card, the tabs are only changed on the first card.
That’s my index.html:
JavaScript
x
64
64
1
<div class="row">
2
3
@foreach (var q in Model.Question)
4
{
5
<div class="col-sm-12 col-lg-6 pt-sm-4 pt-4">
6
<div class="card ">
7
<div class="card-header">
8
<ul class="nav nav-tabs card-header-tabs" id="fragen-list" role="tablist">
9
<li class="nav-item">
10
<a class="nav-link active" href="#frage" role="tab" aria-controls="frage" aria-selected="true">Frage</a>
11
</li>
12
<li class="nav-item">
13
<a class="nav-link" href="#antwort" role="tab" aria-controls="antwort" aria-selected="false">Antwort</a>
14
</li>
15
</ul>
16
</div>
17
<div class="card-body">
18
<div class="tab-content mt-3 mt-sm-3">
19
<div class="tab-pane active" id="frage" role="tabpanel">
20
<h5 class="card-title text-center">@q.Question</h5>
21
</div>
22
23
24
<div class="tab-pane" id="antwort" role="tabpanel" aria-labelledby="history-tab">
25
<p class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Antwort1</p>
26
<ul>
27
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Example1 != null)
28
{
29
<li class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Example1</li>
30
}
31
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Example2 != null)
32
{
33
<li class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Example2</li>
34
}
35
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Example3 != null)
36
{
37
<li class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Example3</li>
38
}
39
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Example4 != null)
40
{
41
<li class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Example4</li>
42
}
43
44
</ul>
45
46
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Antwort2 != null)
47
{
48
<p class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Antwort2</p>
49
}
50
@if (@Model.Answer.Single(a => a.Id == q.AnswerId).Antwort3 != null)
51
{
52
<p class="card-text">@Model.Answer.Single(a => a.Id == q.AnswerId).Antwort3</p>
53
}
54
</div>
55
</div>
56
</div>
57
<div class="card-footer text-center">
58
<p class="card-text small text-black-50">Ausbildungsfach: @q.Category | Prüfungsfach: @q.ExamCategory | Schulfach: @q.SubjectCategory </p>
59
</div>
60
</div>
61
</div>
62
}
63
</div>
64
And here is my small javascript file:
JavaScript
1
4
1
$('#fragen-list a').on('click', function (e) {
2
e.preventDefault()
3
$(this).tab('show')
4
});
Card Nav Header:
As soon as I click on “Answer” on my card 2, my card 1 changes to the “Answer” page and not my card 2
Advertisement
Answer
Change your code like below:
JavaScript
1
36
36
1
<div class="row">
2
@{var i = 0; } //add this...
3
@foreach (var q in Model.Question)
4
{
5
<div class="col-sm-12 col-lg-6 pt-sm-4 pt-4">
6
<div class="card ">
7
<div class="card-header">
8
<ul class="nav nav-tabs card-header-tabs" id="fragen-list" role="tablist">
9
<li class="nav-item"> //change here..
10
<a class="nav-link active" href="#frage_@i" role="tab" aria-controls="frage" aria-selected="true">Frage</a>
11
</li>
12
<li class="nav-item"> //change here...
13
<a class="nav-link" href="#antwort_@i" role="tab" aria-controls="antwort" aria-selected="false">Antwort</a>
14
</li>
15
</ul>
16
</div>
17
<div class="card-body">
18
<div class="tab-content mt-3 mt-sm-3">
19
//change here...
20
<div class="tab-pane active" id="frage_@i" role="tabpanel">
21
<h5 class="card-title text-center">@q.Question</h5>
22
</div>
23
24
//change here...
25
<div class="tab-pane" id="antwort_@i" role="tabpanel" aria-labelledby="history-tab">
26
//...
27
</div>
28
</div>
29
</div>
30
//...
31
</div>
32
</div>
33
i++; //add this...
34
}
35
</div>
36