-1

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

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

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

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

我经历的例子

使用 LINQ to SQL 分页搜索结果

提前致谢

4

2 回答 2

0

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

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

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

于 2013-09-13T13:54:50.830 回答
0

试试这个最简单的方法之一

控制器

using PagedList;
public ActionResult Index(int ? pagePos)
{
        //return View(db.Items.ToList());// Change this as following
        int pageNumber = (pagePos ?? 1);
        return View(db.Items.ToList().ToPagedList(pageNumber, 30)); //30 is the size of records in a single page
}

索引.cshtml

@*@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 }))
于 2016-02-05T15:41:06.993 回答