MVC 4如何实现分页和排序

问题描述 投票:0回答:1

很抱歉今天早上打扰你们,但我有一个问题想问你们大家。如何在网页 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>

有人对我如何做有什么建议吗?非常感谢!

asp.net-mvc-4 razor pagination
1个回答
0
投票

您应该第一次获取前 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,它将对记录应用客户端分页,但它将在一次调用中获取所有记录,如果您有大量记录,那么这不是一个好方法金额。

© www.soinside.com 2019 - 2024. All rights reserved.