【问题标题】:Pagedlist not redirecting to next pages when clicked?单击时分页列表不重定向到下一页?
【发布时间】:2017-12-02 15:50:43
【问题描述】:

它正确显示了页数,以及每页的假设记录数,即 10。但是,当我单击第 x 页时,它不会重定向到下一页记录。

我在以前的项目中使用过这段代码,它工作得很好。有什么我可能错过的吗?

我的控制器:

public ActionResult Index(int? page)
    {
        try
        {
            int intPage = 1;
            int intPageSize = 10;
            int intTotalPageCount = 0;

            List<Announcement> col_Announcement = new List<Announcement>();
            int intSkip = (intPage - 1) * intPageSize;

            intTotalPageCount = db.Announcements.Count();

            var result = db.Announcements
                .Take(intPageSize)
                .ToList();

            foreach (var item in result)
            {
                Announcement objAnnouncement = new Announcement();
                objAnnouncement.AnnouncementDate = item.AnnouncementDate;
                objAnnouncement.AnnouncementTitle = item.AnnouncementTitle;
                objAnnouncement.AnnouncementBody = item.AnnouncementBody;

                col_Announcement.Add(objAnnouncement);
            }

            // Set the number of pages
            var _AnnouncementAsIPagedList =
                new StaticPagedList<Announcement>
                (
                    col_Announcement, intPage, intPageSize, intTotalPageCount
                    );

            return View(_AnnouncementAsIPagedList);
        }
        catch (Exception ex)
        {
            ModelState.AddModelError(string.Empty, "Error: " + ex);
            List<Announcement> col_Announcement = new List<Announcement>();

            return View(col_Announcement.ToPagedList(1, 25));

        }
    }

我的观点:

@model PagedList.IPagedList<Test.Models.Announcement>
@using PagedList.Mvc;

<div class="jumbotron">
    <h2>Announcements</h2>
    <table class="table">
        <tr>
            <th>
                Date Posted
            </th>
            <th>
                Title
            </th>
            <th>
                Body
            </th>

        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.AnnouncementDate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.AnnouncementTitle)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.AnnouncementBody)
                </td>
            </tr>
        }

    </table>
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
    @Html.PagedListPager(Model, page => Url.Action("Index", new {page}))
</div>

【问题讨论】:

  • 您需要使用 .Skip 来跳过前 x-1 页。
  • 您首先使用.Skip().Take() 将结果限制为前10 项,然后使用StaticPagedList(),它在内部使用.Skip(),Take(),这没有任何意义。然后使用循环生成另一个相同的集合更没有意义。而且您甚至从未使用发送到该方法的 page 的值 - 您只获得前 10 条记录,因此您每次只返回相同的 10 条记录集

标签: asp.net asp.net-mvc pagedlist


【解决方案1】:

你需要在记录之前跳过一些记录

int intSkip = (page - 1) * intPageSize;
var result = db.Announcements
            .Skip(intSkip)
            .Take(intPageSize)
            .ToList();

【讨论】:

  • 我添加了.OrderBy(x => x.AnnouncementDate),记录再次显示,但页面仍然无法正常工作
  • 检查更新的答案。计算跳过pahe时需要使用page
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多