Я динамически генерирую/загружаю вкладки из контроллеров, используя список.
<div class = ""row>
<div class = "col-xl-3">
<!-- Tabs nav -->
<div class = "nav flex-column nav-pills nav-pills-custom" id = "v-pills-tab" role = "tablist" aria-orientation = "vertical">
@foreach (var item in ViewBag.Controls)
{
<a class = "nav-link mb-5 p-3" id = "v-pills-home-tab" data-toggle = "pill" href = "#@item.Control" role = "tab" aria-controls = "v-pills-home" aria-selected = "true">
<span class = "font-weight-bold small text-uppercase">@item.Control</span> //tabs
</a>
}
</div>
<!-- /Tabs nav -->
</div>
<div class = "col-xl-9">
<!-- Tabs content -->
<div class = "tab-content" id = "v-pills-tabContent">
@foreach (var item in ViewBag.Controls)
{
<div class = "tab-pane fade shadow rounded bg-white show active p-5" id = "@item.Control" role = "tabpanel" aria-labelledby = "v-pills-home-tab">
<h5 class = "hk-sec-title">@item.Control</h5> //tab content
}
</div>
<!-- /Tabs content -->
</div>
Думаю, мне удалось создать панель навигации вкладок, но не содержимое вкладок. Для более подробного просмотра и заполнения вкладок здесь следуйте скрипту: https://jsfiddle.net/bootstrapious/68o3pmcv/



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В вашем html есть различные ошибки и опечатки, например.
<div class = ""row> должно быть <div class = "row">
Также row div и tab-pane div не имеют закрывающих тегов.
Но основная проблема с вашим кодом заключается в том, что вы добавляете show active классы ко всем tab-pane div. Я добавил логический флаг к элементам ViewBag.Controls и добавляю классы show active только тогда, когда флаг равен true. Конечный результат:
<div class = "row">
<div class = "col-xl-3">
<!-- Tabs nav -->
<div class = "nav flex-column nav-pills nav-pills-custom" id = "v-pills-tab" role = "tablist" aria-orientation = "vertical">
@foreach (var item in ViewBag.Controls)
{
<a class = "nav-link mb-5 p-3 shadow @(item.Active ? "active" : null)" id = "v-pills-home-tab" data-toggle = "pill" href = "#@item.Control" role = "tab" aria-controls = "v-pills-home" aria-selected = "true">
<span class = "font-weight-bold small text-uppercase">@item.Control</span>
</a>
}
</div>
<!-- /Tabs nav -->
</div>
<div class = "col-xl-9">
<!-- Tabs content -->
<div class = "tab-content" id = "v-pills-tabContent">
@foreach (var item in ViewBag.Controls)
{
<div class = "tab-pane fade shadow rounded bg-white p-5 @(item.Active ? "show active" : null)" id = "@item.Control" role = "tabpanel" aria-labelledby = "v-pills-home-tab">
<h5 class = "hk-sec-title text-dark">@item.Control</h5>
</div>
}
</div>
<!-- /Tabs content -->
</div>
</div>
Я протестировал приведенный выше код с этими данными:
ViewBag.Controls = new[]
{
new { Control = "test1", Active = false },
// Selected by default. You can change this but only add active true to one item.
new { Control = "test2", Active = true },
new { Control = "test3", Active = false },
new { Control = "test4", Active = false }
};
Что содержит
ViewBag.Controls?