Asp.net mvc 3 MVC 3中分页列表的问题
我有一个名为PagedList的类,它如下所示: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;
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,这样您的视图就可以正确地枚举它。