我有一个如下所示的视图
这是上面视图的控制器方法
public ActionResult Add_Product()
{
var model = new AddNewProduct
{
ListProductFields = db.AB_ProductTypeCategoryField.ToList()
};
return View(model);
}
这是上面视图的模型类
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; }
}
这是viewpage
@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);
}
但后来我遇到了运行时错误
“AB_ProductTypeCategoryField”类型的值无法转换为字符串。
答案 0 :(得分:0)
你的观察问题在线下
var dummyItems = db.AB_ProductTypeCategoryField.Select(x => "Item " + x);
因为你试图用字符串连接操作选择对象(&#34;项目&#34; + x),这就是抛出异常的原因,因为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);
}
答案 1 :(得分:0)
尝试使用以下代码,因此您无法单独使用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);