Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 发送多个模型以查看MVC 4_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net 发送多个模型以查看MVC 4

Asp.net 发送多个模型以查看MVC 4,asp.net,asp.net-mvc,asp.net-mvc-3,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,我有两个模型类,每个都是数据库中的一个表。一种型号叫做“衣服”,另一种型号叫做“鞋子” 我想在同一个razor视图中显示每个表的内容,但MVC只允许我向视图发送一个模型 @model IEnumerable<Test.Models.Clothes> @model IEnumerable 有没有办法将多个模型发送到razor视图 如果没有,在已将另一个模型传递给它的视图中显示另一个模型的内容的正常方式是什么。谢谢你的建议 创建自己的类,即视图模型,并将其由两个模型组成。或者创建一个

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

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

@model IEnumerable<Test.Models.Clothes>
@model IEnumerable
有没有办法将多个模型发送到razor视图


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

创建自己的类,即视图模型,并将其由两个模型组成。

或者创建一个视图模型类,该类将两个类都作为其对象。然后它将是类型安全的

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 ;

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

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

  • 视图数据
  • 视袋
  • 局部视图
  • 临时数据
  • 视图模型
  • 元组

视图模型是首选方法。此外,将模型(数据库对象)传递给视图不是一个好主意。仅使用所需的FieldsHanks创建ViewModel,以便回放并提供代码示例,是否有机会在控制器上扩展?这对我不起作用。