使用多个模型创建ViewModel

时间:2012-02-03 21:12:33

标签: asp.net-mvc-3 viewmodel

使用两个模型构建ViewModel

模型1:人(身份证,姓名,地址,电话,CategoryId)

模型2:类别(CategoryId,CategoryText)

ViewModel:PersonViewModel(Name,Phone,CategoryText)

问题:如何在我的控制器中生成ViewModel并将其转发到视图:

 var model = (from x in db.Person 
             select new PersonViewModel { 
                    Name = x.Name, 
                    Phone = x.Phone, 
                    CategoryText = ??? }).ToList(); 

如何生成CategoryText?

由于

2 个答案:

答案 0 :(得分:3)

您需要加入类别。 您可能能够包括如下,如果不是,您只需要加入。尝试下面的内容(我忘记了你是否可以在这个语法中包含() - 我脑子里的东西告诉我你不能,如果是这样的话我会很快删除它,因为我看到有人刚刚发布了连接语法)


var model = (from x in db.Person.Include(o=>o.Category) //assumes EF 4.1 if not try .Include("Category")
             select new PersonViewModel { 
                    Name = x.Name, 
                    Phone = x.Phone, 
                    CategoryText = x.Category.CategoryText }).ToList(); 

答案 1 :(得分:1)

var model = (from x in db.Person
             join y from db.Category on x.CategoryId equals y.CategoryID 
             select new PersonViewModel { 
                    Name = x.Name, 
                    Phone = x.Phone, 
                    CategoryText = y.CategoryText }).ToList();