0

ビューは 1 つしか持つことができません@model Folder.ModelNameが、2 つの異なるテーブルのデータを 1 つのビューに表示したい場合はどうすればよいでしょうか? これを行うにはどうすればよいですか?正しい方法は何ですか? たとえば、現在のユーザーのすべての利益を選択し、現在のユーザーのすべてのコストを 1 つのビューで選択したい場合、明らかに、これは 2 つの異なるモデルを持つ 2 つのテーブルです。asp.net mvc基本的に私の質問は、パターンのルールと概念をどこで見つけることができるかということです。

4

1 に答える 1

2

ViewModel と呼ばれるものを作成します。ViewModel には、1 つ以上のエンティティ、メソッド、追加のフィールドなどを含めることができます。次に、この ViewModel をビューに渡します。例えば、

namespace Sample
{
    public class ProfitCostViewModel
    {
        public Profit Profit { get; set; }
        public Cost Cost { get; set; }

        public decimal DoSomeCalculations()
        {
            // Do something
        }
    }
}

アクションで、この ViewModel クラスのインスタンスを作成し、Profit と Cost のプロパティを初期化します。次に、このオブジェクトをビューに渡します。ビュー内で、次のようにモデルを宣言できます。

@model Sample.ProfitCostViewModel

そしてそれを次のように使用します

<p>Current profit or something: @Model.Profit.SomeProfitProperty</p>
<p>Sample cost: @Model.Profit.SomeCostProperty</p>

これが、2 つ以上のエンティティをモデルとしてビューに渡す方法です。

更新:あなたの行動は次のようなものかもしれません:

public ActionResult YourAction()
{
    var profitCostVm = new ProfitCostViewModel();
    profitCostVm.Profit = LoadProfitFromSomewhere();
    profitCostCm.Cost = LoadCostFromSomewhere();

    return View(profitCostCm);
}
于 2013-03-02T21:54:01.267 に答える