Asp.net mvc 3 MVC 3中分页列表的问题

Asp.net mvc 3 MVC 3中分页列表的问题,asp.net-mvc-3,Asp.net Mvc 3,我有一个名为PagedList的类,它如下所示: 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;

我有一个名为PagedList的类,它如下所示:

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 int PageIndex{get;private set;}
public int PageSize{get;private set;}
公共整数TotalCount{get;private set;}
公共整型TotalPages{get;private set;}
公共图书馆
{
得到
{
返回(this.PageIndex>0);
}
}
公共图书馆
{
得到
{
返回(this.PageIndex+1
在我的客户控制器中,我这样使用它:

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);
}
public ActionResult索引(int?页)
{
IRepository profile=ObjectFactory.GetInstance();
常量int pageSize=25;
IQueryable profiles=profile.GetAll().OrderBy(x=>x.LastName).AsQueryable();
var pagedCustomers=新的页面列表(配置文件,第0页,页面大小);
返回视图(pagedCustomers);
}
最后,在我的Index.cshtml文件中,我设置了我的模型,如下所示:

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

当我成为模特的时候。这是一个巨大的列表,与我在客户控制器中创建的页面列表无关

有人知道我做错了什么吗


更新:
截图:


您现在的模型类是
System.Web.Mvc.ViewPage
,而不是
PagedList
——这可能就是您在模型上看到所有这些奇怪数据的原因


是用于渲染模型的组件,不应是模型本身。将您的模型类型更改为仅
页面列表
,它应该可以工作。

页面列表是可枚举的。要访问单个UserInfo对象,请使用@foreach(模型中的var UserInfo)


还有人提到IQueryable的使用。在边界处使用ToArray()或ToList()是一种很好的做法。您的存储库是一个边界,所以我会考虑将分页逻辑移到它并使它返回PaGeDLIST对象或构造一个数据所需的数据。

您能向我们展示一些模型输出看起来大致的一些文本吗?我不确定我是否理解您的请求。“当我成为模特的时候。这是一个巨大的列表,与我在客户控制器中创建的页面列表无关。“-通过示例说明这意味着什么。我将模型更改为@model PagedList,我可以看到PagedList类中的项目,但在UserInfo上看不到任何内容,因此我认为我正在接近另一个问题可能是您使用IQueryable。。。除非您在将模型提供给视图后对其执行其他查询,否则请尝试将其更改为常规的旧IEnumerable或IList,这样您的视图就可以正确地枚举它。