Навигационные вкладки Bootstrap не отображают содержимое вкладок в mvc?

Я динамически генерирую/загружаю вкладки из контроллеров, используя список.

<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/

Что содержит ViewBag.Controls?

Dimitris Maragkos 01.10.2022 19:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем 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 }
};

Другие вопросы по теме