当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我如何在ASP.NETMVC中进行分页?》经验,为你挑选了3个好方法。



1> Marc Gravell..:

那么,什么是数据源?你的行动可以采取一些默认的论点,即

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
                        });

要拆分Feed,您可以非常轻松地使用LINQ:

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

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

使用LINQ-toSQL,EF等 - 这也应该"组合"到数据库.

然后,您应该能够使用动作链接到下一页(等):

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


这是一个有趣的路由示例,所以我会赞成它.我还没有深入使用LINQ,所以Skip和Take对我来说是新的.但这绝对是我需要的.这就是为什么我会将此标记为答案.

2> 小智..:

我遇到了同样的问题,并为一个Pager Class找到了一个非常优雅的解决方案

http://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/

在您的控制器中,通话看起来像:

return View(partnerList.ToPagedList(currentPageIndex, pageSize));

在你看来:

Seite: <%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount)%>



3> dav_i..:

我想通过前端介绍一种简单的方法:

控制器:

public ActionResult Index(int page = 0)
{
    const int PageSize = 3; // you can always do something more elegant to set this

    var count = this.dataSource.Count();

    var data = this.dataSource.Skip(page * PageSize).Take(PageSize).ToList();

    this.ViewBag.MaxPage = (count / PageSize) - (count % PageSize == 0 ? 1 : 0);

    this.ViewBag.Page = page;

    return this.View(data);
}

视图:

@* rest of file with view *@

@if (ViewBag.Page > 0)
{
    
        « Prev
    
}
@if (ViewBag.Page < ViewBag.MaxPage)
{
    
        Next »
    
}


`var data = this.dataSource.Skip(page*PageSize).Take(PageSize).ToList();`需要`orderBy(o => o.Id)`才能使用`skip()`|| 除此之外,这是一个很好的答案,值得更多的赞成.
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有