我想从数据库中获取发票项目,但IEnumerable Type
中存在问题错误
传递到字典中的模型项的类型为'System.Data.Entity.DynamicProxies.InvoiceHD_19624A0A21E23A6589B4A75F4B214A34A6186F3A2FF588A6B9CC2A40272A9BBD',但是该字典需要类型为'System.Collections.Generic.IEnumerable`1 [ICSNew.Data.InvoiceHD]'的模型项。
我的控制器
public ActionResult GetInvoice(int Id)
{
Models.InvoiceHDViewModel _invHd = new Models.InvoiceHDViewModel();
ICSNew.Data.InvoiceHD _invOdr = new Data.InvoiceHD();
_invOdr = (new ICSNew.Business.ICSNewController.SalesController())
.GetInvoiceItemByInvoiceId(Id);
_invHd.Cash = _invOdr.CashAmount;
return View(_invOdr);
}
我的观点
@model IEnumerable<ICSNew.Data.InvoiceHD>
@{
Layout = null;
}
<h2>GetInvoice</h2>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.CashAmount)
}
我的存储库
public InvoiceHD GetInvoiceItemByInvoiceId(int InvoiceId)
{
try
{
return context.InvoiceHDs.Where(x => x.InvoiceId == InvoiceId
&& x.IsActive == true).FirstOrDefault();
}
catch (Exception ex)
{
return new InvoiceHD();
}
}
答案 0 :(得分:2)
由于您将InvoiceHD
的实例传递给视图,因此您需要将模型更改为InvoiceHD
并删除视图代码中的foreach
块,如下所示
@model ICSNew.Data.InvoiceHD
@{
Layout = null;
}
<h2>GetInvoice</h2>
@Html.DisplayFor(m => m.CashAmount)
答案 1 :(得分:1)
当错误试图告诉您时,您将视图声明为收集对象的集合(IEnumerable<>
),但您尝试将其传递给单个对象实例。
那不会奏效。