此字典需要一个类型为';System.Collections.Generic.IEnumerable`1[Mone
本文关键字:Collections System Generic IEnumerable Mone 字典 类型 一个 | 更新日期: 2023-09-27 18:27:19
我的SQL数据库中有两个表,一个用于存储代理(AgentTransmission
),另一个记录代理的传输历史(TransmissionHistory
)(每个代理在日志记录表上只有一个成功的或回复状态"S"的记录)。
我需要根据基于TransmissionHistory
表的日期设置的过滤器,从AgentTransmission
表中获取信息。然而,由于我需要将其发送到的视图正在寻找@model IEnumerable<Monet.Models.AgentTransmission>
,我得到了以下错误
The model item passed into the dictionary is of type 'System.Collections.Generic.List1[<>f__AnonymousTypeb'18[System.String,System.String,System.String,System.String,System.String,System.String,System.Int64,System.String,System.String,System.Nullable'1[System.DateTime],System.Boolean,System.String,System.String,System.String,System.String,System.String,System.String,System.Nullable'1[System.DateTime]]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable'1[Monet.Models.AgentTransmission]'.
我是Linq/Entity Framework的新手,所以如果有人能给我一个关于正在发生的事情的提示,我将不胜感激。谢谢
var agents = (from a in db.AgentTransmission
join t in db.TransmissionHistory on
a.ID equals t.TranTableId
where a.RecordStatus.Equals("C") &&
a.WelcomeLetter &&
t.ReplyResult.Equals("S") &&
EntityFunctions.DiffDays(t.TransmittedOn, startDate) <= 0 &&
EntityFunctions.DiffDays(t.TransmittedOn, endDate) >= 0
select new
{
a.BankName,
a.DRMCompanyName,
a.Pendist,
a.FirstName,
a.LastName,
a.MiddleInitial,
a.ReferenceNumber,
a.AgencyId1,
a.AgencyIdType1,
a.EffectiveDate,
a.JIT,
a.Email,
a.LocationStreet1,
a.LocationStreet2,
a.LocationCity,
a.LocationState,
a.LocationZip,
a.CreatedDate
});
return View(agents.ToList());
您将一个匿名对象传递给视图(选择的new {}
部分),而视图需要一个类型为IEnumerable<AgentTransmission>
的对象(因为这是您在@model
声明中使用的对象)。你应该在传递给你的视图的模型中保持连贯。理想情况下,设计一个视图模型,让select语句返回一个new SomeViewModel
,然后让视图强类型化为@model IEnumerable<SomeViewModel>
。
正如错误试图告诉您的那样,您将视图声明为接受AgentTransmission
的集合。
不能将匿名类型的集合传递给它。