如何在MVC3 asp中使用多个模型

时间:2012-01-04 09:36:26

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

如果我有一个包含模型“iEnumerable<mymodel.CarsForHire>”的MVC3 ASP.net页面 - 它直接链接到实体框架模型 - 我现在也想要包含MVC3生成的默认用户管理模型,我怎样才能一次使用这两个模型?

我假设我必须传递一个集合,或者创建一个名为“blah”的模型,该模型的字段为“carsforHire”,最终结合iEnumerable<mymodel.CarsForHire>,但不知道从哪里开始。

非常感谢任何想法

3 个答案:

答案 0 :(得分:3)

你已经提到了解决方案;创建一个包含所有必需数据的视图模型类。例如:

public class SomeViewModel
{ 
   public User CurrentUser { get; set; }
   public IEnumerable<mymodel.CarsForHire> Cars { get; set; }
}

在控制器中构造该模型并将其传递给您的视图。并且不要忘记更新视图顶部的类型声明。

答案 1 :(得分:1)

我通常做的是创建一个ViewModel类。例如:

public class CarsViewModel
{
    public IEnumerable<mymodel.CarsForHire> CarsForHire { get; set; }

    public UserModel User { get; set; }
}

然后使用CarsViewModel而不是IEnumerable<mymodel.CarsForHire>

创建视图

答案 2 :(得分:0)

如果您愿意,可以使用EF的导航属性。

public class carForHire()
{
 int property1{get; set;}
 .
 .
 .
//Navigationla property
public virtual blah blah { get; set; }
}


在您的页面/视图中,您可以像访问它一样访问它

@foreach(var item in Mode)
  {
 item.blah.blahProperty
  }