2011-08-14 56 views
0

我命名PagedList了類,看起來像這樣:問題與MVC分頁表3

public class PagedList<T> : List<T> 
{ 

    public int PageIndex { get; private set; } 
    public int PageSize { get; private set; } 
    public int TotalCount { get; private set; } 
    public int TotalPages { get; private set; } 

    public bool HasPrevious 
    { 
     get 
     { 
      return (this.PageIndex > 0); 
     } 
    } 

    public bool HasNext 
    { 
     get 
     { 
      return (this.PageIndex + 1 < this.TotalPages); 
     } 
    } 

    public PagedList(IEnumerable<T> source, int pageIndex, int pageSize) 
    { 
     this.PageIndex = pageIndex; 
     this.PageSize = pageSize; 
     this.TotalCount = source.Count(); 
     this.TotalPages = (int)Math.Ceiling(TotalCount/(double)PageSize); 

     this.AddRange(source.Skip(this.PageIndex * this.PageSize).Take(this.PageSize)); 
    } 
} 

在我客戶控制器我用它像這樣:

public ActionResult Index(int? page) 
{ 
    IRepository<UserInfo> profile = ObjectFactory.GetInstance<IRepository<UserInfo>>(); 

     const int pageSize = 25; 

     IQueryable<UserInfo> profiles = profile.GetAll().OrderBy(x => x.LastName).AsQueryable<UserInfo>(); 

     var pagedCustomers = new PagedList<UserInfo>(profiles, page ?? 0, pageSize); 

    return View(pagedCustomers); 
} 

最後在我的Index.cshtml文件中,我設置了我的模型,如下所示:

@model System.Web.Mvc.ViewPage<PagedList<Clusteris.Data.UserInfo>> 

而當我去模型。這是一個巨大的列表,與我在Customers控制器中創建的PagedList無關。

任何人有什麼想法我做錯了什麼?


UPDATE:
截圖:

enter image description here

+0

你能向我們展示一些模型輸出大致的文字嗎? – Aaronontheweb

+0

我不確定我是否瞭解您的請求 – PsychoCoder

+0

「當我去模型時,這是一個巨大的列表,與我在客戶控制器中創建的PagedList無關。」 - 通過舉例的方式解釋這意味着什麼。 – Aaronontheweb

回答

0

PagedList是可枚舉的。要訪問單獨的UserInfo對象,請使用@foreach(模型中的var userInfo)

其他人提到了使用IQueryable。在邊界處使用ToArray()或ToList()是一種很好的做法。您的存儲庫是一個邊界,所以我會考慮將分頁邏輯移動到它並使其返回PagedList對象或構建一個必需的數據。

0

模型類,現在是System.Web.Mvc.ViewPage<PagedList<Clusteris.Data.UserInfo>>,而不是PagedList<Clusteris.Data.UserInfo> - 這可能是爲什麼你看到所有這些奇怪的數據對您的模型。

System.Web.Mvc.ViewPage是用於渲染模型的組件,不應該是模型本身。將您的模型類型更改爲PagedList<Clusteris.Data.UserInfo>,它應該可以工作。

+0

我將模型更改爲_ @ model PagedList _並且我可以看到PagedList類中的項目,但UserInfo上沒有任何內容,因此我認爲我越來越接近 – PsychoCoder

+0

另一個問題可能是您對IQueryable的使用。 ..除非在將模型提供給您的視圖後再對模型進行其他查詢,只需將其更改爲常規的舊IEnumerable或IList即可 - 這樣,您的視圖就可以正確枚舉它。 – Aaronontheweb