如何使用相同的操作从控制器发送两个模型
答案 0 :(得分:2)
假设您的两个模型是MyModel和MyOtherModel的实例。
我可以想到两个选择:
选项1确实不是您理想的解决方案。由于您的模型应该与您的视图相关(这就是我更喜欢名称ViewModel的原因),我真的会选择2。
选项2看起来像这样:
public class MyBigModel
{
public MyModel { get; set; }
public MyOtherModel { get; set; }
}
答案 1 :(得分: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之类的工具将这些视图模型来回映射到域模型。视图模型为您构建视图提供了极大的灵活性,因为您可以在不更改域的情况下为其提供任何形状和形式。