这个字典需要一个'System.Collections.Generic.IEnumerable`1 [Monet.Models.AgentTransmission]'类型的模型项

时间:2013-08-12 20:22:45

标签: c# asp.net-mvc asp.net-mvc-3 linq entity-framework

我的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());

2 个答案:

答案 0 :(得分:2)

您正在将匿名对象传递给您的视图(选择的new {}部分),而您的视图需要IEnumerable<AgentTransmission>类型的对象(因为这是您在@model中使用的对象宣言)。您应该在传递给视图的模型中保持一致。理想情况下,设计一个视图模型,让select语句返回new SomeViewModel,然后让您查看强类型为@model IEnumerable<SomeViewModel>

答案 1 :(得分:0)

由于错误试图告诉您,您将视图声明为收集AgentTransmission

您无法将其传递给匿名类型的集合。