我想要做的是从我的付款表中获取值并进行汇总
但是在我的回报中,我得到了这个问题的回归View( model ); :
参数类型models.Payments不能分配给模型类型 'System.Collections.Generic.IEnumerable'
我收到此错误,因为我没有在我的视图中分配正确的模型
答案 0 :(得分:1)
您的剃刀视图是对EarningsViewModel集合的强类型。但是从您的action方法中,您传递的是Payments
类的单个对象。所以你得到这个错误!
理想情况下,您应该为此特定视图创建新的视图模型。
public class ClientPaymentInfo
{
public string ClientName { set;get;}
public List<PaymentInfoVm> Payments { set;get;}
public ClientPaymentInfo()
{
Payments = new List<PaymentInfoVm>();
}
}
public class PaymentInfoVm
{
public int Id { set;get;}
public string PaymentNumber { set;get;}
public decimal Amount { set;get;}
}
现在您应该更新您的剃刀视图以强类型为该类型。
@model ClientPaymentInfo
<h2>Payments of @Model.ClientName</h2>
@foreach(var item in Model.Payments)
{
<p>@item.Amount</p>
<p>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</p>
}
<p>Total : @Model.Payments.Sum(s=>S.Amount)
所以你的行动方法将是
public ActionResult Index(int id)
{
var vm= new ClientPaymentInfo { ClientName = "Hard coded Client Name"};
vm.Payments = db.PaymentsList.Where(x => x.ClientsId == id)
.Select(d=>new PaymentInfoVm {
Id=d.Id,
Amount=d.Amount,
PaymentNumber=d.Paymentnumber}).ToList();
return View(vm);
}
答案 1 :(得分:0)
您的问题是您要发送不同类型的模型,因此您的视图正在列出EarningsViewModel
的列表:
@model IEnumerable<MyApp.Models.ViewModels.EarningsViewModel>
您正在传递Payments
个对象。