【发布时间】:2019-05-14 19:29:49
【问题描述】:
我有一个名为 Reorder 的视图。这是一个列表视图,基本上显示了所有可用的耗材。这个列表太长了,我们不得不实现分页,这样页面就可以加载而不会超时。效果很好。
我们还有一个过滤器(文本框),用户可以在其中输入一个数字,然后过滤列表以仅查看库存等于或少于所需数量的供应品。理论上,上面提到的过滤器可以正常工作。
问题是 - 当用户选择超出结果的第一页时,过滤器仍然存在,但库存数量会被删除,并且所有供应品(无论库存数量如何)都会重新开始显示。
我尝试了几种不同的方法,但无法确定在分页代码中添加搜索字符串的位置,以便将其传递到用户跳转到的任何页面。
这是我的重新排序控制器代码
public ActionResult Reorder(string searchString, int? page)
{
var supplies = db.ICS_Supplies.OrderByDescending(g => g.Supplies_ID).ToList();
int searchValue;
// If searchString is null (or not an int), then set our searchValue to int.MaxValue
if (!int.TryParse(searchString, out searchValue)) searchValue = int.MaxValue;
// var catalogs = supplies.Where(s => s.OnHand.HasValue && s.OnHand.Value <= searchValue);
var catalogs = supplies.Where(s => s.OnHand < searchValue);
var pageNumber = page ?? 1;
return View(catalogs.ToPagedList(pageNumber, 10));
}
搜索字符串从视图传递到控制器并用于返回 OnHand 等于或小于该值的结果。 searcstring 最终被转换为 searchvalue。
我应该在这一行的某处添加 searchvalue 吗?
var pageNumber = page ?? 1;
return View(catalogs.ToPagedList(pageNumber, 10));
【问题讨论】:
标签: c# asp.net-mvc-5 pagedlist