如何在c#mvc中进行分页

时间:2013-09-13 11:24:24

标签: asp.net-mvc c#-4.0 asp.net-mvc-4 pagination

如何在C#MVC中进行分页?

我正在尝试做这样的事情,

我希望从数据库中检索1000条记录并将其保存在服务器端,然后我希望每页发送10条记录,以便在用户请求搜索到的页面时查看。

我已经通过了一些例子,但我无法得到更好的解决方案,我更喜欢我建议的方式或更好的解决方案。 (我也使用jquery而不使用Razor)

我经历过的例子

Paginated search results with LINQ to SQL

提前致谢

2 个答案:

答案 0 :(得分:0)

ASP.NET MVC中的分页是一些库解决的问题;你可以在Nuget.org找到它们 http://www.nuget.org/packages?q=paging

  

我希望从数据库中检索1000条记录并将其保存在服务器端,然后我希望每页发送10条记录,以便在用户请求搜索到的页面时查看。

检索1000条记录并将它们保存在您的应用程序中并不理想。最好在每个请求中检索10条记录;正如您在问题中提到的,在linq查询中使用SkipTake的解决方案是完美的。但是,页面缓存数据没有问题。

答案 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)