将模型转换为viewmodel

kan*_*oid 3 model-view-controller viewmodel asp.net-mvc-3

我有一个表名"Product"和另一个表名"category".产品表有'productID','productName'和'CategoryID'.类别表有'categoryID'和'categoryName'.

我的目标是显示带有类别的产品列表.该列表将包含"产品ID","产品名称"和"类别名称".

我创建了一个viewmodel.代码是

public int prodID{get;set;}
public int prodName{get;set;}
public int catName{get;set;}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有:

var query= from p in dc.Product
                      select new {p.ProductID,p.ProductName,p.Category1.CategoryName };
var prod = new ProductIndexViewModel()
        {
            ProductList=query //this line is problematic !!it says an explicit conversion exists....
        };
        return View(prod);
Run Code Online (Sandbox Code Playgroud)

我如何编写我的控制器代码,以便它与viewmodel匹配?

kro*_*lik 7

您可以使用AutoMapper而不是从db模型重写属性.

var viewModel = new ProductIndexViewModel()
{  
    ProductList = dc.Product.ToList().Select(product => Mapper.Map<Product, ProductViewModel>(product));
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*ich 5

也许你会直接使用你的视图模型类:

       var query = from p in dc.Product
                    select new ProductIndexViewModel() { 
                        prodID = p.ProductID, 
                        prodName = p.ProductName, 
                        catName = p.Category1.CategoryName 
                    };

        List<ProductIndexViewModel> productForView = query.ToList();
Run Code Online (Sandbox Code Playgroud)