Как я могу использовать Bootstrap Carousel в качестве списка для записей БД?

#c# #asp.net-mvc #bootstrap-4

#c# #asp.net-mvc #bootstrap-4

Вопрос:

я немного поискал, и мне действительно нужно знать, как использовать класс bootstrap 4 Carousel в качестве списка некоторых данных модели?

я попытался управлять самостоятельно, и я сделал что-то вроде этого в представлении :

 @model IEnumerable<ElMatrodySite.Models.NewsData>
<link href="~/Content/Home.css" rel="stylesheet" />
@{
    ViewBag.Title = "Home Page";
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<style>
  /* Make the image fully responsive */
  .carousel-inner img {
    width: 100%;
    height: 100%;
  }
</style>
<div class="container">
    <div style="width:100%;height:150px;padding-top:0px; direction:rtl;">
        <div class="row">
            <div class="col-xl-4">
                <img src="~/photos/Logo.png" class="mx-auto d-block" style="height:250px;"/>
            </div>
            <div class="col-xl-8" style="text-shadow:0px 4px 10px #808080; color:#352c5e;">
                <br />
                @if (Request.IsAuthenticated)
                {
                    ElMatrodySite.Models.ApplicationUser Apps = new ElMatrodySite.Models.ApplicationUser();
                    <h2 class="mx-auto d-block text-center" id="ccword">مرحبًا بك @Apps.Firstname في موقع أسرة المطرودي !</h2>
                }
                else
                {
                    <h2 class="mx-auto d-block text-center" id="ccword">مرحبًا بكم في الموقع الرسمي الجديد لأسرة المطرودي !</h2>
                }
            </div>
        </div>
    </div>
</div>
<div class="row" style="direction:rtl;">
    <div class="container">
        <div class="col-xl-6" style="padding-top:150px;" id="xcard">
            <div id="myCarousel" class="carousel slide" data-ride="carousel">

                <ol class="carousel-indicators">
                    @{
                        int i = 0;
                    }
                    @foreach (var item in Model)
                    {
                        <li data-target="#myCarousel" data-slide-to="@i" class="@(i == 0 ? "active" : "")"></li>
                        i  ;
                    }
                </ol>

                <div class="carousel-inner">
                    @{
                        i = 0;
                    }
                    @foreach (var item in Model)
                    {
                        <div class="item @(i == 0 ? "active" : "")">
                            <img src="~/NewsPhotos/@item.file" class="image img-responsive">
                            <div class="carousel-caption">
                                <h3>@item.ArticleTitle</h3>
                            </div>
                        </div>
                        i  ;
                    }
                </div>
                <a class="left carousel-control" href="#myCarousel" data-slide="prev">
                    <span class="glyphicon glyphicon-chevron-left"></span>
                    <span class="sr-only">Previous</span>
                </a>
                <a class="right carousel-control" href="#myCarousel" data-slide="next">
                    <span class="glyphicon glyphicon-chevron-right"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
        </div>
    </div>
</div>
  

это неправильно, потому что каждому элементу в списке нужен идентификатор в data-slide-to
а также один из них должен быть, active но это возможно при работе с foreach , чтобы получить список данных.

это код в контроллере :

 [HttpGet]
        public ActionResult Index()
        {
            List<NewsData> slideList = new List<NewsData>();
            using (MatrodyEntities db = new MatrodyEntities())
            {
                var type = new NewsData();
                slideList = db.NewsData.Where(xx => xx.ArticleID == type.ArticleID).Take(5).ToList();
                return View(from NewsData in db.NewsData.ToList() select NewsData);
            }
        }
  

Поскольку я беру последние 5 элементов, добавленных в базу данных.

итак, мне нужен небольшой учебник, чтобы составить Carousel список с asp.net mvc без разрушения всего дизайна.

Комментарии:

1. «Поскольку я беру последние 5 элементов, добавленных в базу данных». нет, это не так. Вы получаете последние 5 элементов в переменной, которую вы никогда не используете

2. @CamiloTerevinto как использовать его в представлении so?

Ответ №1:

Как я понимаю, вы хотите получить список данных из базы данных и хотите использовать bootstrap Carousel . Как я заметил в вашем методе action, вы получаете последние 5 записей и не передаете их для просмотра, вместо этого вы используете

 return View(from NewsData in db.NewsData.ToList() select NewsData);
  

Вы можете использовать напрямую

 return View(slideList);
  

И, на ваш взгляд, вы можете использовать модель list , как показано ниже

     <div id="myCarousel" class="carousel slide" data-ride="carousel">

    <ol class="carousel-indicators">
        @{
            int i = 1;
        }
        @foreach (var item in Model)
        {
            <li data-target="#myCarousel" data-slide-to="@i" class="@(i == 1 ? "active" : "")"></li>
            i  ;
        }
    </ol>

    <div class="carousel-inner">
        @{
            i = 1;
        }
        @foreach (var item in Model)
        {
            <div class="item @(i == 1 ? "active" : "")">
                <img src="@item.ImagePath" class="image img-responsive">
                <div class="carousel-caption">
                    <h3>@item.Title</h3>
                </div>
            </div>
            i  ;
        }
    </div>
    <a class="left carousel-control" href="#myCarousel" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left"></span>
        <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#myCarousel" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right"></span>
        <span class="sr-only">Next</span>
    </a>
</div>
  

Комментарии:

1. я пробовал ваше решение, но когда я его запускаю, в браузере ничего не отображается, я проверил страницу с помощью CTRL Shift C , и нет ничего, связанного с carousel, что-то вроде некоторого кода делает его скрытым

2. Я также поместил полный код представления в вопрос выше, можете ли вы проверить это, пожалуйста?

3. Убедитесь, что данные поступают из базы данных и slideList не пусты, для справки я создал фрагмент кода, перейдите по этой ссылке dotnetfiddle.net/b0HFUe

4. вау, спасибо, большое вам спасибо! вся чертова проблема была в CDN, который я использовал для начальной загрузки и jquery

5. но, к сожалению, новый CDN повлиял на дизайн, есть ли способ сделать так, чтобы этот cdn влиял только на карусель? и другой cdn для остальной части страницы?