【问题标题】:How do you display values from a table based on another table in MVC 4?如何根据 MVC 4 中的另一个表显示表中的值?
【发布时间】:2012-11-27 23:28:43
【问题描述】:

我有 2 个模型,一个客户表和一个产品表。我对 MVC 很陌生,我已经创建了一个模型,并且我有自动生成的控制器和视图以获取详细信息、删除、创建......等等......

我的模型是:

[Table("Product")]
public class Product
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ProductId { get; set; }
    public decimal Price { get; set; }
    public int CustomerId { get; set; }
}

[Table("Customer")]
public class Customer
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int CustomerId { get; set; }
    public string Name { get; set; }
}

我的问题是,如何根据客户名称显示产品列表。显然它们是由 CustomerId 加入的,但是我如何组合控制器。所以我想根据另一个表中的数据显示一些数据。

【问题讨论】:

  • 您可能想查看有关 ASP.NET MVC 应用程序中相关数据的本教程:asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/…。 (如果您还没有这样做,我还建议您遵循完整的教程。)
  • 是的,我试图坚持一个 MVC 4 教程,这对我没有帮助,但这个看起来不错!
  • 如果您从 MVC 开始,您可以按照 MVC 3 教程进行操作,因为它们通常适用于 MVC 4。稍后,您可以开始使用上一个版本中引入的新功能。

标签: asp.net-mvc asp.net-mvc-3 entity-framework asp.net-mvc-4


【解决方案1】:

您需要向客户添加一个导航属性。

[Table("Customer")]
public class Customer
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int CustomerId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

然后您可以使用它为客户访问产品。

public ActionResult ProductsByCustomer(string id)
{
    // Find the customer by name
    var customer = dbContext.Customer.First(c => c.Name == id);

    // Get the customers products
    var customersProducts = customer.Products;

    // Send products to the View to be rendered
    return View(customersProducts);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多