首页 > 解决方案 > 如何在 ASP.NET CORE MVC 中正确实现分页

问题描述

在 ASP.NET Core MVC 项目中实现分页的最首选和最有效的方法是什么?

我目前有一个 .cshtml 视图,允许用户查看他们已提交的帮助台票证。就前端而言,我使用的表是 class table-responsive table-responsive-data2。我想显示用户决定的尽可能多的条目。

硬编码示例

在使用 ASP.NET Core MVC 时实现这一点的最佳方法是什么?

编辑:名称列将被删除,因为它是同一用户制作票

以下是整个工单实体 (Tickekt.cs):

namespace HelpDeskTicket.Models
{
    public class Ticket
    {
        public string EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public int Id { get; set; }
        public string Department { get; set; }
        public string Title { get; set; }
        [StringLength(225)]
        public string TicketDescription { get; set; }
        public byte[] Attachment { get; set; }
        public string AttachmentName { get; set; }
        public string AttachmentExtension { get; set; }
        public DateTime CreatedDate { get; set; }

        [Required]
        public TicketStatus Status { get; set; } 
    }

    public enum TicketStatus
    {
        Resolved,
        InProgress,
        Unresolved
    }
}

  //How would I modify the TicketController.cs in order to implement Pagination properly
 public IActionResult MyTickets(Employee employee) => View();

标签: c#.net-coreasp.net-core-mvcbackend

解决方案


在 ASP.NET Core MVC 项目中实现分页的最首选和最有效的方法是什么?

如果您想实现服务器端分页功能,您可以在视图页面中添加分页按钮(例如“上一个”、“下一个”等),并在用户单击分页按钮时将等传递给操作方法pageIndexpageSize

在您的操作方法中,您可以根据用户传递的and使用Skipand语句过滤和返回分页数据。TakepageIndexpageSize

var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();

本教程通过示例说明了如何实现分页功能,您可以参考。

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page?view=aspnetcore-3.1#add-paging-to-students-index


推荐阅读