小编典典

如何在ASP.NET MVC中进行分页?

c#

在ASP.NET MVC中进行分页的最优选和最简单的方法是什么?即,将列表分成几个可浏览页面的最简单方法是什么。

举例来说,假设我从数据库/网关/存储库中获取了这样的元素列表:

public ActionResult ListMyItems()
{
    List<Item> list = ItemDB.GetListOfItems();
    ViewData["ItemList"] = list;

    return View();
}

为了简单起见,我只想为我的操作指定页码作为参数。像这样:

public ActionResult ListMyItems(int page)
{
   //...
}

阅读 333

收藏
2020-05-19

共1个答案

小编典典

那么,数据源是什么?您的操作可以采用一些默认参数,即

ActionResult Search(string query, int startIndex, int pageSize) {...}

默认设置为路由设置,因此startIndex为0,pageSize为(例如)20:

        routes.MapRoute("Search", "Search/{query}/{startIndex}",
                        new
                        {
                            controller = "Home", action = "Search",
                            startIndex = 0, pageSize = 20
                        });

要拆分提要,可以很容易地使用LINQ:

var page = source.Skip(startIndex).Take(pageSize);

(如果您使用“ pageNumber”而不是“ startIndex”,则进行乘法运算)

使用LINQ-toSQL,EF等-这也应该“组成”到数据库。

然后,您应该可以使用指向下一页的操作链接(等):

<%=Html.ActionLink("next page", "Search", new {
                query, startIndex = startIndex + pageSize, pageSize }) %>
2020-05-19