对我来说,这是漫长的一天,我相信在stackoverflow上总能找到答案。我已经搜索过类似的帖子,但我想没有一个帖子有我迫切需要的东西。这是交易,我正在处理这个MVC 4项目,但我遇到了一些问题,导致我将其打开。在我的 MVC 上使用IPageList进行分页非常酷,但是我怎样才能继续分页使用索引的相同ActionResult容器过滤的结果。这是一些可以用餐的代码。
public ActionResult Index(int? page, int category = 0)
{
int pageSize = 10;
int pageNumber = (page ?? 1);
if (category != 0)
{
var products = (from p in db.Products where p.ProductID == category select p).OrderBy(x => x.ProductName).ToList();
return View(products.ToPagedList(pageNumber, pageSize));
}
else
{
var products = (from p in db.Products select p).OrderBy(x => x.ProductName).ToList();
return View(products.ToPagedList(pageNumber, pageSize));
}
}
基本上int 类别是从下拉列表中获得的值。它完美过滤,但问题是当我过滤结果大于 10 并且我尝试转到下一页时,它返回到索引初始结果。调试它,我意识到一旦单击next,int类别的值就会被清除并进入else块。这是分页控件,可能需要调整一些东西......
<div>Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
@Html.Raw(" ");
@Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
@Html.Raw(" ");
@Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
}
else
{
@:Next >
@Html.Raw(" ")
@:>>
}
我需要的是页面上返回的过滤结果来响应分页。我会等待答案。谢谢!