同じアクションを使用してコントローラーからビューに2つのモデルを送信するにはどうすればよいですか
1430 次
2 に答える
2
2 つのモデルが MyModel と MyOtherModel のインスタンスであると仮定しましょう。
次の 2 つのオプションが考えられます。
- MyModel をモデルとして渡し、MyOtherModel を ViewBag に入れます。
- 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 に答える