当我从db中提取数据时提到字段名称的那一刻,我开始收到错误。
在我的代码出现之前它正在运行:
var customer = from s in db.Customers
select s;
我将其更改为:
var customer = (from s in db.Customers
select new
{
CompanyName = s.CompanyName,
ContactName = s.ContactName,
ContactTitle = s.ContactTitle,
Address = s.Address,
});
我开始收到如下错误:
传递到字典中的模型项是类型的 'PagedList.PagedList
1[<>f__AnonymousType2
4 [System.String,System.String,System.String,System.String]]', 但是这个字典需要一个类型的模型项 'PagedList.IPagedList`1 [MVCCRUDPageList.Models.Customer]'。
我的观点如下:
@model PagedList.IPagedList<MVCCRUDPageList.Models.Customer>
@using PagedList.Mvc;
答案 0 :(得分:1)
导致此错误的原因是您未将Customer
模型发送到视图
通过执行select new { ... }
,您将创建一个匿名对象。
您可以考虑将代码更改为:
select new MVCCRUDPageList.Models.Customer
{
CompanyName = s.CompanyName,
ContactName = s.ContactName,
ContactTitle = s.ContactTitle,
Address = s.Address,
}
您可能仍需要将IQueryable
转换为IPagedList
答案 1 :(得分:1)
错误告诉您视图需要一种类型,但您传递的是另一种类型。您拥有的Linq Select
方法是投射到匿名类型而不是预期的Customer
类。将代码更改为匹配,类似这样
var customer = (from s in db.Customers
select new Customer //<--- This here, you may need to use
// the full namespace MVCCRUDPageList.Models
{
CompanyName = s.CompanyName,
ContactName = s.ContactName,
ContactTitle = s.ContactTitle,
Address = s.Address,
});