每页加载一个项目 [分页]

load one item per page [ Pagination ]

我的浏览页面如下

这是上面视图的控制器方法

public ActionResult Add_Product()
{       
    var model = new AddNewProduct
    {
        ListProductFields = db.AB_ProductTypeCategoryField.ToList()
    };

    return View(model);
}

这是模型 class 以上视图

public class AddNewProduct
{
    public string Product_ID { get; set; }
    public string ProductTypeID { get; set; }
    public string ProductCategoryID { get; set; }
    public string Subsidary_ID { get; set; }

    public IList<AB_ProductTypeCategoryField> ListProductFields { get; set; }
}
public partial class AB_ProductTypeCategoryField
{
    public string Field_Value_EN { get; set; }
    public string Field_Value_AR { get; set; }
}

这是浏览页

@model albaraka.Models.AddNewProduct

@using (Html.BeginForm()) 
{        

        @for (int i = 0; i < Model.ListProductFields.Count; i++)
        { 
          @Html.TextAreaFor(m => m.ListProductFields[i].Field_Value_EN, new { @class = "form-control summernote", @row = 5 })

          @Html.TextAreaFor(m => m.ListProductFields[i].Field_Value_AR, new { @class = "form-control summernote", @row = 5 })
        }

}

现在我想为上面的视图页面添加分页并限制每页一个 ListProductFields,为此我关注 this Tutorial

所以我把代码改成这样

    public ActionResult Add_Product(int? page)
    {

        var dummyItems = db.AB_ProductTypeCategoryField.Select(x => "Item " + x);
        var pager = new PaginationModel.Pager(dummyItems.Count(), page);


        var model = new AddNewProduct
        {
            Items = dummyItems.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(),
            Pager = pager
        };

        return View(model);

    }

但后来我遇到了 运行 次错误

Values of type 'AB_ProductTypeCategoryField' can not be converted to string.

您观察的问题在

线下
var dummyItems = db.AB_ProductTypeCategoryField.Select(x => "Item " + x);

由于您正在尝试使用字符串连接操作 ("Item " + x) select 对象,这就是抛出异常的原因,因为 AB_ProductTypeCategoryField 是一个对象。我认为您根本不需要 "Item " + x

您可以将 AddNewProdcut 操作实施更改为

public ActionResult Add_Product(int? page)
    {
        var pager = new PaginationModel.Pager(dummyItems.Count(), page);

        var model = new AddNewProduct
        {
            ListProductFields = db.AB_ProductTypeCategoryField.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(),
            Pager = pager
        };

        return View(model);

    }

只需尝试使用以下代码,因此您不能单独使用 Skip 方法。所以在

之前使用OrderBy
var dummyItems = db.AB_ProductTypeCategoryField;
            var pager = new PaginationModel.Pager(dummyItems.Count(), page);

            var model = new AddNewProduct
            {
                ListProductFields = dummyItems.OrderBy(i => i.SomeProperty).Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(),
                Pager = pager
            };

            return View(model);