2011-08-14 4 views
0

I했습니다 다음과 같습니다 PagedList 이름을 가지고 클래스 :문제 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 (Model의 var userInfo)를 사용하십시오.

다른 사람이 IQueryable 사용에 관해 언급했습니다. 경계에서 ToArray() 또는 ToList()를 사용하는 것이 좋습니다. 저장소가 경계이므로 페이징 논리를 페이징 논리로 이동하여 PagedList 개체 또는이를 구성하는 데 필요한 데이터를 반환하도록하는 것이 좋습니다.

0

귀하의 모델 클래스 지금 PagedList<Clusteris.Data.UserInfo>에 반대 System.Web.Mvc.ViewPage<PagedList<Clusteris.Data.UserInfo>> - 이것은 당신이에이 이상한 모든 데이터를보고하는 이유를 가능성이 당신의 모델.

System.Web.Mvc.ViewPage은 모델을 렌더링하는 데 사용되는 구성 요소이며 모델 자체가 아니어야합니다. 모델 유형을 PagedList<Clusteris.Data.UserInfo>으로 변경하면 제대로 작동합니다.

+0

모델을 _ @ model PagedList _로 변경했으며 PagedList 클래스의 항목을 볼 수 있지만 UserInfo에는 아무 것도 표시되지 않으므로 가까이 갈 수 있습니다. – PsychoCoder

+0

다른 문제는 IQueryable을 사용하는 것일 수 있습니다. ..보기에 제공 한 후에 모델에 대한 추가 쿼리를 수행하지 않는 한이 뷰를 일반적인 이전 IEnumerable 또는 IList로 변경하면보기가 올바르게 열거 될 수 있습니다. – Aaronontheweb