很抱歉今天早上打扰你们,但我有一个问题想问你们大家。如何在网页 MVC 4 中添加分页和排序?我搜索了很多例子,但我无法在我的项目中实现它。
在控制器中:
public ActionResult Index(int? Id, String Name)
{
IQueryable<ProductSubcategory> list = null;
if (Id == null)
{
list = BikesDB.ProductSubcategories;
}
else
{
int id = Id.Value;
list = BikesDB.ProductSubcategories.Where(m => m.ProductSubcategoryID == id && m.NameofBike == Name);
}
var bikes = list.Where(m => m.isSelected == true)
.AsEnumerable().Select(p => new Bike { Id = p.ProductSubcategoryID, Name = p.NameofBike });
var viewModel = new CategoriesIndexViewModel
{
NumberOfModel = bikes.Count(),
NameofBike = bikes.Select(b=>b.Name).ToList(),
Bikes = bikes.ToList()
};
return this.View(viewModel);
}
在.cshtml中:
@model AdventureCycle.ViewModels.CategoriesIndexViewModel
@{
ViewBag.Title = "Categories";
}
<h2>Categories Bikes</h2>
<p>There are @Model.NumberOfModel kind of bikes</p>
<ul>
@foreach (var bike in Model.Bikes)
{
<li><span> @Html.ActionLink(bike.Name, "Categories", new {id = bike.Id, name = bike.Name})</span></li>
}
</ul>
有人对我如何做有什么建议吗?非常感谢!
您应该第一次获取前 10 或 20 条记录,并且在用户发生某些事件时获取接下来的 20 条记录:
var bikes = list.Where(m => m.isSelected == true)
.AsEnumerable()
.Select(p => new Bike { Id = p.ProductSubcategoryID,
Name = p.NameofBike })
.Take(20);
然后单击“下一步”按钮,根据前 20 条记录的最后一个 id 获取接下来的 20 条记录。
您可以做的第二种方法是使用Jquery datatables,它将对记录应用客户端分页,但它将在一次调用中获取所有记录,如果您有大量记录,那么这不是一个好方法金额。