使用IEnumerable类型将模型传递给视图
本文关键字:视图 模型 IEnumerable 类型 使用 | 更新日期: 2023-09-27 18:24:47
我想从数据库中获取发票项目,但IEnumerable Type 中存在问题
错误
传递到字典中的模型项的类型为"System.Data.Entity.DynamicProxies.IInvoiceHD_19624A0A21E23E6589B4A75F4B214A34A6186F3A2F588A6B9CC2A40272A9BBD",但此字典需要"System.Collections.Generic.IEnumerable'1[ICSNew.Data.IInvoiceHD]"类型的模型项。
我的控制器
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();
}
}
由于将InvoiceHD
的实例传递给视图,因此需要将模型更改为InvoiceHD
,并在视图代码中删除foreach
块,如下所示
@model ICSNew.Data.InvoiceHD
@{
Layout = null;
}
<h2>GetInvoice</h2>
@Html.DisplayFor(m => m.CashAmount)
正如错误试图告诉您的那样,您将视图声明为接受对象的集合(IEnumerable<>
),但您试图将单个对象实例传递给它。
那行不通。