【问题标题】:HowTo: Using MvcContrib.Pagination without using MvcContrib.Grid ViewHowTo:在不使用 MvcContrib.Grid 视图的情况下使用 MvcContrib.Pagination
【发布时间】:2023-03-26 05:21:01
【问题描述】:

这开始是一个问题,但在我做了一些实验后变成了一个解决方案!所以我想我会和大家分享这个。我的问题是:

如何在不使用 MvcContrib.Grid View 的情况下使用 MvcContrib.Pagination?

下面是我的答案……

【问题讨论】:

    标签: c# asp.net-mvc pagination


    【解决方案1】:

    我正在构建一个帮助台票务系统(我是一个 C# 新手 - 从 NerdDinner 获得了许多指点),我希望使用某种分页库来帮助查看。我找到了 MvcContrib.Pagination 并让它为视图工作。我的视图不使用 MvcContrib.Grid,因为它是自定义的。

    我的视图的缩小版List.aspx

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Areas.HelpDesk.Models.hd_Ticket>>" %>
    <%@ Import Namespace="MyProject.Areas.HelpDesk.Controllers" %>
    <%@ Import Namespace="MvcContrib.Pagination" %>
    
    <h2>Help Desk Tickets (showing <%= Model.Count() %> of <%= ViewData["totalItems"] %>)</h2>     
    
    <% foreach (var item in Model) { %>
        <h3><%= Html.Encode(item.Subject)%></h3>
    <% } %>
    
    <p><%= Html.Pager((IPagination)Model)%></p>
    

    我的控制器(部分)TicketController.cs

    TicketRepository ticketRepository = new TicketRepository();
    
    public ActionResult List(int? page, int? pageSize)
    {
        IPagination<hd_Ticket> tickets = null;
    
        int dPageSize = 50;
        int totalItems;
    
        tickets = ticketRepository.GetTickets().ToList().AsPagination(page ?? 1, pageSize ?? dPageSize);
        ViewData["totalItems"] = tickets.TotalItems;
    
        return View("List", tickets);
    }
    

    我正在使用以 IQueryable 形式返回结果的存储库模式。这是 TicketRepository.cs 文件的一部分:

    public class TicketRepository
    {
        private HelpDeskDataContext db = new HelpDeskDataContext();
    
        public IQueryable<hd_Ticket> FindAllTickets()
        {
            return from ticket in db.hd_Tickets
                   orderby ticket.CreatedDate descending
                   select ticket;
        }
    }
    

    所有这些对某些人来说可能微不足道,但如果像我这样的人正在尝试学习 C# 和 ASP.NET MVC 和分页,那么这可能会很有用。我推荐新手学习 NerdDinner 教程:

    http://nerddinnerbook.s3.amazonaws.com/Intro.htm

    :)

    【讨论】:

    • 你不应该在 AsPagination() 之前调用 ToList()。 ToList() 构建查询中所有项目的列表,因此即使稍后您只在页面上显示其中的一个子集,您仍然可以从存储库中获取所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多