在ASP中,最首选和最简单的分页方式是什么.网络MVC?也就是说,把一个列表分成几个可浏览页面的最简单方法是什么.

例如,假设我从数据库/网关/存储库获得一个元素列表,如下所示:

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

    return View();
}

为了简单起见,我只想为我的操作指定一个页码作为参数.这样地:

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

推荐答案

那么数据来源是什么呢?您的操作可能需要一些默认参数,即

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

Asp.net相关问答推荐

如何在编译时为我的 ASP.NET 项目中的每个控制器生成一个单独的 OpenAPI Swagger.json 文件?

我可以强制刷新我的样式表文件吗?

如何在运行时判断动态数据类型的类型?

从数据库中检索数据的最快方法

判断 asp.net mvc 4 应用程序中的 ssl 协议、密码和其他属性

IE10 SCRIPT5009:__doPostBack未定义

ASP.NET-MVC 中的表单发布上的 FormCollection 为空

如何在 FileUpload 控件中限制文件类型

从 JavaScript 读取 web.config

没有回发的按钮?

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

InvalidOperationException:无法为角色创建 DbSet,因为此类型未包含在上下文模型中

导航到本地 IIS Express 时,Chrome 会返回错误请求 - 请求太长

global.asax 中的 Application_Error 未捕获 WebAPI 中的错误

ASP.NET 身份提供程序 SignInManager 不断返回失败

在c#中显示带有换行符的标签文本

如何在 asp.net 中实现Access-Control-Allow-Origin标头

Page.IsPostBack 和 Page.IsCallBack 有什么区别?

ASP.NET Web 窗体中的 jQuery 验证插件

在没有等待 #2 的情况下调用异步方法