发送多个模型以查看MVC 4

时间:2012-07-16 05:07:31

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

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

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

@model IEnumerable<Test.Models.Clothes>

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

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

3 个答案:

答案 0 :(得分:11)

创建一个以类为对象的视图模型类。那将是类型安全的。

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.It执行此操作的另一种简单方法是使用添加到C#4中的动态功能。它允许对象动态添加属性。它也是Type Safe

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

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

ViewData["Clothes "] = objClothes ;
ViewData["Shoes "] = objShoes ;

答案 1 :(得分:2)

创建自己的类,也就是查看模型,并让它由两个模型组成。

答案 2 :(得分:0)

我发现这篇文章非常有趣:

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

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

  • 的ViewData
  • ViewBag
  • PartialView
  • TempData的
  • 视图模型
  • 元组