我需要显示存储过程的结果并使其看起来像附加的图像。我知道我必须创建一个看起来像这样的模型
public class MyInvoice
{
public DateTime invoiceDate { get; set; }
public string invoiceNumber { get; set; }
public double amount { get; set; }
public double amountDue { get; set; }
}
其他金额将是一些字段的总和 总到期金额为其他金额和到期金额总和
我需要将一个模型传递给我的视图。如何在模型中包含计算字段? 我想访问我视图中的计算字段。 我是否只是根据我的模型添加其他金额和总金额?
我也知道我必须在我的动作结果方法中写出这样的东西,但不知道如何处理 其他金额和总金额,因为它们不是来自数据库。
IEnumerable<MyInvoice> model = _myInvoiceService.GetInvoice()
return view(model);
答案 0 :(得分:3)
正确的方法是创建ViewModel
:
public class MyViewModel
{
public List<MyInvoice> MyInvoices {get; set;}
public double OtherAmount {get; set;}
public double TotalDue {get; set;}
}
然后将Invoices
映射到ViewModel
:
IEnumerable<MyInvoice> model = _myInvoiceService.GetInvoice();
var myViewModel = new MyViewModel();
myViewModel.MyInvoices = model;
myViewModel.OtherAmount = //whatever you want here;
myViewModel.TotalDue = //total due here
return View(myViewModel);
答案 1 :(得分:0)
您通常不会使用模型查看视图,而是使用ViewModel。
为此创建一个辅助类,您可以在其中计算您喜欢的任何值:
public class InvoiceViewModel
{
public MyInvoice Invoice { get; set; }
public double SomeComputedAmount {
get {
return Invoice.SomeValue + Invoice.OtherValue;
}
public List<InvoiceLineItem> LineItems { get; set; }
}
更改代码以符合操作方法中的以下内容:
List<InvoiceViewModel> model = null;
foreach(var invoice in _myInvoiceService.GetInvoice())
{
model.Add(new InvoiceViewModel { Invoice = invoice };
// etc...
}
return view(model);
最后,让您的视图接受InvooViewModel的IEnumerable。