Пейджинг возвращается к просмотру индекса - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть приложение для блога на 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 комментария, но не могу получить больше двух.

...