如何在asp.net viewmodels中使用jQuery分页

时间:2019-02-25 12:59:29

标签: c# jquery asp.net-mvc pagination

我想知道在asp.net中使用viewModel时如何实现分页。 使用Jquery以不加载所有表数据。 这是我的项目。

我有2张桌子:

产品包含:产品ID-产品名称-产品描述。

图像包含:ImageID-ImagePath-ProductFK

在我的ViewModel中

Tombstone

在我的索引视图中

public class myViewModel
{
  public List<Products> myProducts { get; set; }
  public List<Images> myImages{ get; set; }
}

这是我的控制器,用于返回产品和图片列表。

@model myProject.myViewModel
@foreach (Products item in Model.myProducts)
{
@item.ProductName
@item.ProductDescription
}

1 个答案:

答案 0 :(得分:1)

在控制器或共享设置类中创建一个变量来确定页面大小,如果将来要更改,将在一个位置进行更改(或者您可以根据系统设置动态读取它)。

public int pageSize
{
    get
    {
        return 10;
    }
}

在您的视图模型中,添加一个名为 pageNumber 的新int字段。 您将设置此变量以告诉您的控制器要提取哪个页面。

然后仅使用实体框架LINQ从数据库中获取所需数据:

     public ActionResult Show()
    {
    var viewModel = new myViewModel{
    myProduct= DB.Products..ToList(),

    myImages= DB.Images.OrderBy(a => a.Id).Skip(pageSize * (pageNumber- 1))
         .Take(pageSize).ToList(); // this will fetch only required data from database
}
    return View(viewModel);
    }

并且在您的UI中,您需要将页码传递给controller,您的操作将变为:

 public ActionResult Show(int pageNumber)
{
  var viewModel = new myViewModel();
viewmodel.PageNumber = pageNumber; // pass it to view again you may need to give the selected page special css
}