0

我需要显示存储过程的结果并使其看起来像附加的图像。我知道我必须创建一个看起来像这样的模型

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);

在此处输入图像描述

4

2 回答 2

3

正确的方法是创建一个ViewModel

public class MyViewModel
{
    public List<MyInvoice> MyInvoices {get; set;}
    public double OtherAmount {get; set;}
    public double TotalDue {get; set;}
}

然后将您映射InvoicesViewModel

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);
于 2013-08-22T13:43:36.297 回答
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);

最后,让您的视图接受 InvoiceViewModel 的 IEnumerable。

于 2013-08-22T13:42:45.230 回答