我的SQL数据库中有两个表,一个用于存储代理(AgentTransmission
),另一个用于记录代理的传输历史记录(TransmissionHistory
)(只有一个成功,或者回复状态“S”,记录每个代理的记录表)。
我需要根据基于AgentTransmission
表日期的过滤器集从TransmissionHistory
表中获取信息。但是,由于我需要发送此视图以查找@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());
答案 0 :(得分:2)
您正在将匿名对象传递给您的视图(选择的new {}
部分),而您的视图需要IEnumerable<AgentTransmission>
类型的对象(因为这是您在@model
中使用的对象宣言)。您应该在传递给视图的模型中保持一致。理想情况下,设计一个视图模型,让select语句返回new SomeViewModel
,然后让您查看强类型为@model IEnumerable<SomeViewModel>
。
答案 1 :(得分:0)
由于错误试图告诉您,您将视图声明为收集AgentTransmission
。
您无法将其传递给匿名类型的集合。