页面显示数据库中的所有内容
Page displays everything that is in the database
PageSize 字段表示信息应显示在一页上,大约八个对象,但该页显示数据库中的所有内容。
private readonly IObjectRepository _objectRepository;
private readonly IWebHostEnvironment hostingEnvironment;
public int PageSize = 8;
public HomeController(IObjectRepository objectRepository, IWebHostEnvironment hostingEnvironment)
{
_objectRepository = objectRepository;
this.hostingEnvironment = hostingEnvironment;
}
public ViewResult Index(int objectPage)
{
var model = _objectRepository.GetAllObjects();
model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
return View(model);
}
Skip and Take return 结果是一个新的 IEnumerable,而不是修改现有的 IEnumerable。所以,你应该替换这一行:
model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
与:
model=model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
这样,您将新的查询值分配给 baseQuery,然后在枚举它时,它将 return 预期的实体。
谢谢大家!我用 Methanit 找到了另一个解决方案,非常感谢他。
1 - 更改了我的 PageViewModel
public class PageViewModel
{
public int PageNumber { get; set; }
public int TotalPages { get; set; }
public PageViewModel(int count, int pageNumber, int pageSize)
{
PageNumber = pageNumber;
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
}
public bool HasPreviousPage
{
get
{
return (PageNumber > 1);
}
}
public bool HasNextPage
{
get
{
return (PageNumber < TotalPages);
}
}
}
2 - 更改了控制器中的方法索引:
public IActionResult Index(int page = 1)
{
int pageSize = 6;
var model = _objectRepository.GetAllObjects();
var count = model.Count();
var items = model.Skip((page - 1) * pageSize).Take(pageSize).ToList();
PageViewModel pageViewModel = new PageViewModel(count, page, pageSize);
IndexViewModel viewModel = new IndexViewModel
{
PageViewModel = pageViewModel,
Objects = items
};
return View(viewModel);
}
3 - 应用程序运行正常。
非常感谢!
PageSize 字段表示信息应显示在一页上,大约八个对象,但该页显示数据库中的所有内容。
private readonly IObjectRepository _objectRepository;
private readonly IWebHostEnvironment hostingEnvironment;
public int PageSize = 8;
public HomeController(IObjectRepository objectRepository, IWebHostEnvironment hostingEnvironment)
{
_objectRepository = objectRepository;
this.hostingEnvironment = hostingEnvironment;
}
public ViewResult Index(int objectPage)
{
var model = _objectRepository.GetAllObjects();
model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
return View(model);
}
Skip and Take return 结果是一个新的 IEnumerable,而不是修改现有的 IEnumerable。所以,你应该替换这一行:
model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
与:
model=model.OrderBy(o => o.Id)
.Skip((objectPage - 1) * PageSize)
.Take(PageSize);
这样,您将新的查询值分配给 baseQuery,然后在枚举它时,它将 return 预期的实体。
谢谢大家!我用 Methanit 找到了另一个解决方案,非常感谢他。
1 - 更改了我的 PageViewModel
public class PageViewModel
{
public int PageNumber { get; set; }
public int TotalPages { get; set; }
public PageViewModel(int count, int pageNumber, int pageSize)
{
PageNumber = pageNumber;
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
}
public bool HasPreviousPage
{
get
{
return (PageNumber > 1);
}
}
public bool HasNextPage
{
get
{
return (PageNumber < TotalPages);
}
}
}
2 - 更改了控制器中的方法索引:
public IActionResult Index(int page = 1)
{
int pageSize = 6;
var model = _objectRepository.GetAllObjects();
var count = model.Count();
var items = model.Skip((page - 1) * pageSize).Take(pageSize).ToList();
PageViewModel pageViewModel = new PageViewModel(count, page, pageSize);
IndexViewModel viewModel = new IndexViewModel
{
PageViewModel = pageViewModel,
Objects = items
};
return View(viewModel);
}
3 - 应用程序运行正常。 非常感谢!