将模型转换为视图模型

发布于 2024-12-02 19:32:26 字数 683 浏览 1 评论 0原文

我有一个表名称“产品”和另一个表名称“类别”。 产品表有“productID”、“productName”和“CategoryID”。 类别表有“categoryID”和“categoryName”。

我的目标是显示带有类别的产品列表。该列表将包含“产品 ID”、“产品名称”和“类别名称”。

我创建了一个视图模型。代码

public int prodID{get;set;}
public int prodName{get;set;}
public int catName{get;set;}

在我的控制器中,我有:

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);

我将如何编写我的控制器代码以便它与视图模型匹配?

I have a table name "Product" and another table name "category".
Product table has 'productID', 'productName' and 'CategoryID'.
Category table has 'categoryID' and 'categoryName'.

My target is to display a list of products with category. The list will contain 'product id', 'product name' and 'category name'.

I have created a viewmodel. the code is

public int prodID{get;set;}
public int prodName{get;set;}
public int catName{get;set;}

In my controller, I have:

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);

How would I write my controller code so that it matches with the viewmodel??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

耳根太软 2024-12-09 19:32:27

您可以使用 AutoMapper 而不是从数据库模型重写属性。

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

You can use AutoMapper instead of rewriting properties from db model.

var viewModel = new ProductIndexViewModel()
{  
    ProductList = dc.Product.ToList().Select(product => Mapper.Map<Product, ProductViewModel>(product));
}
冰火雁神 2024-12-09 19:32:27

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

       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();

Maybe you will use your view model class directly:

       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();
自演自醉 2024-12-09 19:32:27

prodNamecatName 应该是字符串吗?

另外,为什么不这样做:

var viewModel = dc.Product
    .ToList()
    .Select(x => new ProductIndexViewModel { prodID = x.ProductId, ... }

return View(viewModel);

Should prodName and catName be strings?

Also, why not just do this:

var viewModel = dc.Product
    .ToList()
    .Select(x => new ProductIndexViewModel { prodID = x.ProductId, ... }

return View(viewModel);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文