gpt4 book ai didi

asp.net-mvc - MVC 4 中的过滤和分页

转载 作者:行者123 更新时间:2023-12-01 10:58:26 25 4
gpt4 key购买 nike

我花了漫长的一天试图解决这个问题,我相信在 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 并且我尝试转到下一页时,它返回到索引初始结果。调试它,我意识到一旦单击下一个,int category 的值就会被清除,它会进入 else block 。这里是分页控件可能有什么地方需要调整...

<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(" ")
@:>>
}

我需要的是页面返回的过滤结果响应分页。我会等待答案。谢谢!

最佳答案

Suhas 之前的回答和评论的帮助下,我能够得出一个更清晰、更好的解决方案。这是最终的解决方案:

public ActionResult Index(int? page, int category = 0)
{
int pageSize = 10;
int pageNumber = (page ?? 1);
if (category != 0)
{
ViewBag.CurrentFilter = category;
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));
}
}

我希望它能帮助其他人。 Suhas 实至名归。干杯!

注意:Suhas 在此解决方案下的评论很重要。

关于asp.net-mvc - MVC 4 中的过滤和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com