0

我有一个产品列表,并希望在每次页面刷新时将它们发送到部分查看,每页 5 个。显示所有部分后,在下次刷新时从列表的开头重新开始。如果产品列表计数不是5的被除数,例如count = 23,回到第一个。即取 15-20,然后取 20-2(21、22、23、1 和 2)。然后,3-8又继续。

我不能将分页规则用作:

ViewBag.Result = db.Products.Skip( ( pageNo - 1 ) * 5).Take( 5 ).ToList();

因为,我会将所有操作中的 5 个产品发送到每个令人耳目一新的站点中的视图和更新。

我有一个想法,即采用随机索引并开始,但我需要知道最后一个发送索引,并且在每次刷新时,将其发送到控制器的当前操作。我怎样才能做到这一点?

4

1 回答 1

1

您需要在 HTTP 调用之间保留最后一个发送索引。由于HTTP 是无状态的,因此您需要一种媒介来将其保持在两者之间。您可以使用会话变量来做到这一点。

Session["LastIndexSent"]= 5;
return View(someITemList);

还要尽量避免在 ViewBag 中发送此类结果。使用动态的东西,比如ViewBag/ViewData在控制器和视图之间传输数据会使你的代码变得丑陋。使用强类型的方法。

List<Product> productList=GetProductListFromSomeWhere();
return View(productList);

在你的强类型视图中,

@model List<Product>
@foreach(var prod in Model)
{
  <p>@prod.Name</p>
}
于 2012-09-11T16:14:21.290 回答