0

同じアクションを使用してコントローラーからビューに2つのモデルを送信するにはどうすればよいですか

4

2 に答える 2

2

2 つのモデルが MyModel と MyOtherModel のインスタンスであると仮定しましょう。

次の 2 つのオプションが考えられます。

  1. MyModel をモデルとして渡し、MyOtherModel を ViewBag に入れます。
  2. MyModel を含むプロパティと MyOtherModel を含む別のプロパティを持つクラス MyBigModel を作成し、MyBigModel をモデルとして渡します。

オプション 1 は、理想的なソリューションではありません。モデルはビューに関連している必要があるため (そのため、私は ViewModel という名前を好みます)、オプション 2 を選択します。

オプション 2 は次のようになります。

public class MyBigModel
{
    public MyModel { get; set; }
    public MyOtherModel { get; set; }
}
于 2012-07-03T08:44:29.523 に答える
2

ViewModel を使用 - 両方のモデルを含むモデルをもう 1 つ作成し、それをビューに送信します。

public class MyCustomViewModel
{
     public MyFirstModel First { get; set; }
     public MySecondModel Second { get; set; }
}

そしてコントローラーで

public ActionResult Action()
{
     MyFirstModel first = new MyFirstModel();
     MySecondModel second = new MySecondModel();

     MyCustomViewModel model = new MyCustomViewModel();
     model.First = first;
     model.Second = second;

     return View(model);
}

一般に、名前が示すように、アプリケーション内のすべてのビューにカスタム ViewModel を使用し、AutoMapperなどのツールを使用して、それらのビュー モデルをドメイン モデルに相互にマッピングする必要があります。ビューモデルを使用すると、ドメインを変更せずにビューに任意の形状を与えることができるため、ビューを構成する際の柔軟性が大幅に向上します。

于 2012-07-03T08:44:59.673 に答える