#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/b0HFUe4. вау, спасибо, большое вам спасибо! вся чертова проблема была в CDN, который я использовал для начальной загрузки и jquery
5. но, к сожалению, новый CDN повлиял на дизайн, есть ли способ сделать так, чтобы этот cdn влиял только на карусель? и другой cdn для остальной части страницы?