【发布时间】: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