У меня есть приложение для блога на asp. net ядре. У меня есть комментарии к каждой статье, и я добавил пейджинг с помощью пакета пейджинга отраженияIT, когда я щелкаю на плагине в возвращенном в индексное представление с этим маршрутом
https://localhost:44339/?pageindex=2
Когда я щелкаю по этому маршруту
https://localhost:44339/home/details/8
Служба, которую я добавил:
services.AddPaging(options => {
options.ViewName = "Bootstrap4";
});
Действие контроллера:
[HttpGet]
public IActionResult Details(int id, int pageindex = 1)
{
var article = _articleData.GetArticle(id);
var comments = _commentData.GetComments(id).ToList();
var query = _DbContext.Comments.Where(c => c.ArticleId == id);
var model = new ArticeViewModel();
model.Id = article.Id;
model.Title = article.Title;
model.Author = article.Author;
model.Category = article.Category;
model.Comments = PagingList.Create(query , 3 , pageindex);
model.Date = article.Date;
model.Content = article.Content;
ViewData["Id"] = model.Id.ToString();
return View(model);
}
Вид:
@model Blog.ViewModels.ArticeViewModel
@using ReflectionIT.Mvc.Paging
@addTagHelper *,ReflectionIT.Mvc.Pagin
@{
ViewData["Title"] = "Detail";
}enter code here
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 text-center">
<h1 style="color: darkred !important">@Model.Title</h1>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 text-left">
<span class="text-info">@Model.Author</span>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 text-lg-left">
@Html.Raw(Model.Content)
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12"><hr style="background-color: azure" /></div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12">
@await this.Component.InvokeAsync("Pager", new { pagingList = this.Model.Comments})
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<h3>Comments</h3>
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<table>
@foreach (var comment in Model.Comments)
{
<tr>
<td>
<p style="color: lightgray">@comment.Date.ToString("dddd, dd MMMM yyyy")</p>
</td>
</tr>
<tr>
<td>
<p style="background-color: darkred; color:black; border-radius: 20px">@comment.Content</p>
</td>
@if (this.User.IsInRole("Admin"))
{
<td>
<form asp-action="DeleteComment" asp-controller="Home" asp-route-id="@comment.Id" method="post">
<input type="submit" value="Delete" class="btn btn-danger" />
</form>
</td>
}
</tr>
}
</table>
</div>
@if (SignInManager.IsSignedIn(User))
{
<div class="col-lg-12 col-md-12 col-sm-12">
<form asp-action="Details">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="CommentContent" class="control-label">Comment</label>
<input rows="5" cols="40" asp-for="CommentContent" class="form-control" />
<span asp-validation-for="CommentContent" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Post Comment" class="btn btn-danger" />
</div>
</form>
</div>
}
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Также я добавил в свой индекс подкачку Кстати, и это работает. Есть идеи, почему это может не сработать? Я подозреваю, что это может быть из-за маршрутизации, но я не знаю, в чем проблема. Я получаю только 2 комментария, но не могу получить больше двух.