0

如何使用相同的操作从控制器发送两个模型以查看

4

2 回答 2

2

假设您的两个模型是 MyModel 和 MyOtherModel 的实例。

我可以想到两个选择:

  1. 将 MyModel 作为 Model 传递,并将 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 - 创建一个包含两个模型的模型,并将其发送到视图

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 回答