如何使用相同的操作从控制器发送两个模型以查看
问问题
1430 次
2 回答
2
假设您的两个模型是 MyModel 和 MyOtherModel 的实例。
我可以想到两个选择:
- 将 MyModel 作为 Model 传递,并将 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 - 创建一个包含两个模型的模型,并将其发送到视图
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 回答