0

ストアド プロシージャの結果を表示し、添付の画像のようにする必要があります。このようなモデルを作成する必要があることはわかっています

public class MyInvoice
{
    public DateTime invoiceDate { get; set; }
    public string invoiceNumber { get; set; }
    public double amount { get; set; }
    public double amountDue { get; set; }
}

その他の金額は、いくつかのフィールドの合計になります。合計支払金額は、その他の金額と支払金額の合計の合計になります。

ビューにモデルを 1 つだけ渡す必要があります。モデルに計算フィールドを含めるにはどうすればよいですか? ビュー内の計算フィールドにアクセスしたいと考えています。モデルに応じて他の金額と合計を追加するだけですか?

また、アクション結果メソッドでこのようなものを書かなければならないこともわかっていますが、データベースからのものではないため、他の金額と合計金額を処理する方法がわかりません。

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

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);
于 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 に答える