gpt4 book ai didi

c# - ASP.NET MVC 模型 - 使用脚手架将在模型上创建的连接传递给 Controller ​​和 View

转载 作者:行者123 更新时间:2023-11-30 22:43:42 25 4
gpt4 key购买 nike

是这样的:ASP.NET MVC C#

模型:我想使用在三个表中定义的信息,产品 - 详细信息 - 图片。我创建了一个 ProductRepository 并定义了三个表的连接。最后,我从每个表中选择字段。

    public IQueryable ProductsList()
{
var db = new Entities();
var results = from p in db.Products
join pi in db.ProductPic on p.ProductId equals pi.ProductId
// first join
join pv in db.ProductDetails on p.ProductId equals pv.ProductId
// second join
select new
{
p.Name,
p.Description,
p.PCategory,
p.ProductPicture,
pv.Price,
pi.Picture,
};
return (results);
}

Controller :我定义:

    public ActionResult Index()
{
var products = productrepository.ProductsList();
if (products == null) throw new NotImplementedException();
else
return View("Index", products);
}

View :我从模型 Products 创建了一个强类型 View 。

当我创建 View 时,我只收到表产品中的字段,而不是表详细信息和图片中的字段。

我的主要问题在于必须创建一个 View 以便使用模型上定义的所有字段的方式(在这种情况下 = productrepository.productslist(); 此时,当我直接搭建脚手架时,我只收到字段来自使用强类型产品的产品。

非常感谢!

最佳答案

您将 View 强类型化为 Product 类型,但您的 EF 查询返回包含其他字段的匿名类型。为产品 View 模型创建一个类:

class ProductViewModel
{
public string Name { get; set; }
public string Description{ get; set; }
public string PCategory{ get; set; }
public string ProductPicture{ get; set; }
public string Price { get; set; }
public string Picture { get; set; }
}

然后在您的 EF 查询的选择中,填充此类型而不是您的匿名类型。此外,您应该独立验证您的 EF 查询是否返回预期结果。

关于c# - ASP.NET MVC 模型 - 使用脚手架将在模型上创建的连接传递给 Controller ​​和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com