如何在 MVC 中显示来自两个单独表的数据?
How to display data from two separate tables in MVC?
所以,我是编程新手,我正在尝试制作我的第一个 .net 项目,但我被卡住了。
我有一个包含 table 产品的数据库,它看起来像这样:
[Key]
public int ProductId { get; set; }
public string ProductName { get; set; }
[Range(1, int.MaxValue)]
public double ProductPrice { get; set; }
public string ProductDescription { get; set; }
public string ProductImagePath { get; set; }
public int ProductColorId { get; set; }
[ForeignKey("ProductColorId")]
public virtual ProductColor ProductColor { get; set; }
public int ProductShippingOptionId { get; set; }
[ForeignKey("ProductShippingOptionId")]
public virtual ProductShippingOption ProductShippingOption { get; set; }
public int ProductConditionId { get; set; }
[ForeignKey("ProductConditionId")]
public virtual ProductCondition ProductCondition { get; set; }
ProductShippingOption、ProductColor 和 ProductCondition 列是单独的 table,每个列都包含 Id 和 Name 列。
当我将产品添加到数据库时,我只想在视图中显示一个产品的详细信息,但我需要显示 ProductConditionName 而不是 ProductConditionId(例如)。
我应该在我的 ViewModel 和我的控制器中包含什么,以便我可以在我的视图中使用它?
我在 ProductController 中的操作如下所示
public IActionResult ProductTemplate(int? id)
{
ProductVM productVM = new ProductVM()
{
Product = _db.Product.Find(id),
};
if (id == 0)
{
return NotFound();
}
if (id == 0)
{
return NotFound();
}
if(productVM==null)
{
return NotFound();
}
return View(productVM);
}
谢谢!
最好和最简单的方法是在 Product:
中包含 类
对于您的 ProductTemplate 操作:
ProductVM productVM = new ProductVM()
{
Product = _db.Product.Where(s=>s.Id == id)
.Include(s=>s.ProductColor)
.Include(s=>s.ProductShippingOption)
.Include(s=>s.ProductCondition)
.FirstOrDefault();
};
您可以在 .cshtml 中使用(假设您想要 ProductColor 名称)调用它们:
@Model.Product.ProductColor.Name
或者您可以将 Include()
添加到您的上下文中以默认包含所有内容。
所以,我是编程新手,我正在尝试制作我的第一个 .net 项目,但我被卡住了。
我有一个包含 table 产品的数据库,它看起来像这样:
[Key]
public int ProductId { get; set; }
public string ProductName { get; set; }
[Range(1, int.MaxValue)]
public double ProductPrice { get; set; }
public string ProductDescription { get; set; }
public string ProductImagePath { get; set; }
public int ProductColorId { get; set; }
[ForeignKey("ProductColorId")]
public virtual ProductColor ProductColor { get; set; }
public int ProductShippingOptionId { get; set; }
[ForeignKey("ProductShippingOptionId")]
public virtual ProductShippingOption ProductShippingOption { get; set; }
public int ProductConditionId { get; set; }
[ForeignKey("ProductConditionId")]
public virtual ProductCondition ProductCondition { get; set; }
ProductShippingOption、ProductColor 和 ProductCondition 列是单独的 table,每个列都包含 Id 和 Name 列。
当我将产品添加到数据库时,我只想在视图中显示一个产品的详细信息,但我需要显示 ProductConditionName 而不是 ProductConditionId(例如)。
我应该在我的 ViewModel 和我的控制器中包含什么,以便我可以在我的视图中使用它?
我在 ProductController 中的操作如下所示
public IActionResult ProductTemplate(int? id)
{
ProductVM productVM = new ProductVM()
{
Product = _db.Product.Find(id),
};
if (id == 0)
{
return NotFound();
}
if (id == 0)
{
return NotFound();
}
if(productVM==null)
{
return NotFound();
}
return View(productVM);
}
谢谢!
最好和最简单的方法是在 Product:
中包含 类对于您的 ProductTemplate 操作:
ProductVM productVM = new ProductVM()
{
Product = _db.Product.Where(s=>s.Id == id)
.Include(s=>s.ProductColor)
.Include(s=>s.ProductShippingOption)
.Include(s=>s.ProductCondition)
.FirstOrDefault();
};
您可以在 .cshtml 中使用(假设您想要 ProductColor 名称)调用它们:
@Model.Product.ProductColor.Name
或者您可以将 Include()
添加到您的上下文中以默认包含所有内容。