如何在C#MVC中进行分页?
我正在尝试做这样的事情,
我希望从数据库中检索1000条记录并将其保存在服务器端,然后我希望每页发送10条记录,以便在用户请求搜索到的页面时查看。
我已经通过了一些例子,但我无法得到更好的解决方案,我更喜欢我建议的方式或更好的解决方案。 (我也使用jquery而不使用Razor)
我经历过的例子
Paginated search results with LINQ to SQL
提前致谢
答案 0 :(得分:0)
ASP.NET MVC中的分页是一些库解决的问题;你可以在Nuget.org找到它们 http://www.nuget.org/packages?q=paging
我希望从数据库中检索1000条记录并将其保存在服务器端,然后我希望每页发送10条记录,以便在用户请求搜索到的页面时查看。
检索1000条记录并将它们保存在您的应用程序中并不理想。最好在每个请求中检索10条记录;正如您在问题中提到的,在linq查询中使用Skip
和Take
的解决方案是完美的。但是,页面缓存数据没有问题。
答案 1 :(得分:0)
试试这个 最简单的方法之一
控制器
@*@model IEnumerable<ProjectDB.Models.Item>*@
@*Change These Also as following*@
@model PagedList.IPagedList<ProjectDB.Models.Item>
@using PagedList.Mvc
<table class="table">
<tr>
<th>
Name
</th>
<th>
ID
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
@*Pagination Code Starts*@
<div class="pageCount">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
</div>
@Html.PagedListPager(Model, pagePos => Url.Action("Index", new { pagePos }))
Index.cshtml
$(document)