HowTo:使用MvcContrib.Pagination而不使用MvcContrib.Grid View

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

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

我的答案如下……

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

我的视图List.aspx的缩小版本:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage>" %> <%@ Import Namespace="MyProject.Areas.HelpDesk.Controllers" %> <%@ Import Namespace="MvcContrib.Pagination" %> 

Help Desk Tickets (showing <%= Model.Count() %> of <%= ViewData["totalItems"] %>)

<% foreach (var item in Model) { %>

<%= Html.Encode(item.Subject)%>

<% } %>

<%= Html.Pager((IPagination)Model)%>

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

 TicketRepository ticketRepository = new TicketRepository(); public ActionResult List(int? page, int? pageSize) { IPagination 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 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

🙂