我在将多个模型传递到单个视图时遇到问题,在阅读其他帖子后我收集到了我需要创建一个单独的类并实例化该类并将该实例化类返回给视图。但是,我该怎么做?
我想使用Entity Framework和Linq来进行查询。如果您可以提供示例代码供我学习......
答案 0 :(得分:4)
您可以使用动态:
快速而肮脏地进行操作dynamic viewdata = new ExpandoObject();
viewdata.object1 = Model1;
viewdata.object2 = Model2;
return View(viewdata);
或者你可以正确地创建一个视图模型。
class ViewModel1 {
public MyModel Model1 { get; set; }
public MyOtherModel Model2 { get; set; }
}
ViewModel1 viewdata = new ViewModel1();
viewdata.Model1 = Model1;
viewdata.Model2 = Model2;
return View(viewdata);
答案 1 :(得分:0)
使用
public ActionResult Index()
{
SomeClass1 object1 = new SomeClass1();
SomeClass2 object2 = new SomeClass2();
ViewData["someName1"]=object1;
ViewData["someName2"]=object2;
return View(ViewData);
}
在“查看”页面中,您可以按以下方式访问它们:
<% SomeClass1 object1 = ViewData["someName1"] as SomeClass1; %>
<% SomeClass1 object2 = ViewData["someName2"] as SomeClass2; %>
答案 2 :(得分:0)
创建视图模型。视图模型是一种模型,通常由其他模型组成,不受数据模型的约束。 MvcMusic演示有一个使用视图模型的好例子。
虽然ViewData
将起作用,但它不是类型安全的,基本上依赖于魔术字符串,所以我会避免它。