将多个模型传递给视图

时间:2011-11-03 11:54:53

标签: asp.net-mvc linq entity-framework-4.1

我在将多个模型传递到单个视图时遇到问题,在阅读其他帖子后我收集到了我需要创建一个单独的类并实例化该类并将该实例化类返回给视图。但是,我该怎么做?

我想使用Entity Framework和Linq来进行查询。如果您可以提供示例代码供我学习......

3 个答案:

答案 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将起作用,但它不是类型安全的,基本上依赖于魔术字符串,所以我会避免它。