10

我有两个模型类,每个都是数据库中的一个表。一种型号称为“衣服”,另一种型号称为“鞋子”。

我想在同一个 razor 视图中显示每个表的内容,但 MVC 只允许我将一个模型发送到视图。

@model IEnumerable<Test.Models.Clothes>

有没有办法将多个模型发送到剃刀视图?

如果不是,那么在已经将另一个模型传递给它的视图中显示另一个模型的内容的正常方法是什么。谢谢你的建议。

4

3 回答 3

12

要么创建一个视图模型类,该类具有两个类作为其对象。然后它将是类型安全的。

public class ViewModelForDisplay
{
       public Clothes Clothes {get; set;}
       public Shoes Shoes {get; set;}
}

//on Controller
Clothes objClothes = GetClothes();
Shoes objShoes = GetShoes();

ViewModelForDisplay objViewModel = new ViewModelForDisplay() {Clothes = objClothes, Shoes= objShoes }

另一种简单的方法是使用 ViewBag。它使用添加到 C# 4 中的动态功能。它允许对象动态添加属性。它也是类型安全的

ViewBag.Shoes= objShoes ;
ViewBag.Clothes= objClothes ;

您还可以使用 ViewData 将对象传递给 html。但这不是类型安全的。它需要铸造

ViewData["Clothes "] = objClothes ;
ViewData["Shoes "] = objShoes ;
于 2012-07-16T05:10:52.697 回答
2

制作您自己的类,也就是 View Model,并让它由两个模型组成。

于 2012-07-16T05:08:57.173 回答
0

我发现这篇文章很有趣:

https://workspaces.codeproject.com/user-10826818/using-multiple-models-in-a-view-in-asp-net-mvc-4

它提供了将多个模型发送到视图的不同方法:

  • 查看数据
  • 查看包
  • 部分视图
  • 临时数据
  • 视图模型
  • 元组
于 2014-06-03T09:19:38.193 回答