2009-09-16 61 views

回答

6

我建立一个帮助台售票系统(我种的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

:)

+0

工作正常,我... :) – DucDigital 2009-12-29 06:00:54

+5

你不应该叫AsPagination前ToList()()。 ToList()构建查询中所有项目的列表,因此即使稍后仅在页面上显示其子集,您仍然可以获取存储库中的所有内容。 – dmnd 2010-03-30 21:13:37

相关问题