每页加载一个项目 [分页]
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);
我的浏览页面如下
这是上面视图的控制器方法
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);