-1

作为学习 c# 和 asp.net 的一部分,我有两个表。客户和订单及其在我的 POCO 中的 1:m 关系。

public class Customer
{
public int CustID {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public List<Orders> orders {get; set;}
}

public class Orders
{
public int OrdersID {get; set;}
public int CustID {get; set;}
public string OrderName {get; set;}
public virtual Customer customer {get; set;}
}

现在我的问题是如何从 Customer 实例而不是Orders 实例在一个视图中显示客户和订单的列表。

这就是我的控制器中的内容:

    namespace MvcApplication3.Controllers
{ 
    public class janController : Controller
    {
        private coContext db = new coContext();

     public ViewResult Index()
        {

        return View(db.customer.ToList());
    }

我的 DbContext 的代码:

    namespace MvcApplication3.Models
{
    public class coContext : DbContext
    {
        public DbSet<Customer> customers { get; set; }
        public DbSet<Orders> orders { get; set; }

    }
}

我的部分观点有以下代码:

 @model List<MvcApplication3.Models.Customer>
 @foreach(var customer in Model) {
    <div>Display customer props:</div>
    @Html.DisplayFor(m => customer.LastName)

    <div>Display Orders:
        **@foreach(var order in customer.Orders)** {
            <div>Display some order props:
              @Html.DisplayFor(m => order.OrderName)
            </div>
        }
    </div>
}

我打算从我的客户那里查看子属性或数据。简而言之,我想根据客户读取相关数据,即客户名字姓氏(这些必须是唯一的),然后在之后有相关数据(订单名)。这就是我想要做的。

4

2 回答 2

1

我决定把我的“评论”写在一起作为答案:

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

1 -您可能会忘记是否使用延迟加载的事实......取决于您是否使用 EF4.X/5.X CodeFirst,您可能需要执行以下操作:

var res = db.Customers.where(x=>x.Deleted != null).include(x=>x.Orders).toList(); 

否则(如果您不加载所有“子”属性“您将无法在视图中显示)

2- Sithelo > @emanyalpsid 感谢 Emanyalpsid。如何在我的视图中加载子属性。我试过这个 Html.DisplayFo(modelItem =>item.orders.OrderName 但它可以让我这样做。

您可以使用不同的方式,例如 Jan 解决方案,或其他类似的方式:MVC 编辑器模板: http ://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

于 2012-11-22T11:43:55.007 回答
0

我仍然不确定,你的问题到底是什么,但我试着回答它。从我阅读的您的评论中,您想知道如何在视图中显示相关数据。

@model List<Customer>

@foreach(var customer in Model) {
    <div>Display customer props:</div>
    @Html.DisplayFor(m => customer.LastName)

    <div>Display Orders:
        @foreach(var order in customer.Orders) {
            <div>Display some order props:
              @Html.DisplayFor(m => order.OrderName)
            </div>
        }
    </div>
}

这是你想要的?

编辑

我看过你的项目。您的视图中有此代码:

@foreach(var customer in Model) {
    @Html.DisplayFor(m => customer.LastName)
}

@foreach(var order in customer.orders) {
    <div>Display some order props:
        @Html.DisplayFor(m => order.OrderName)
    </div>
}

问题是,您正在关闭第一个 foreach 循环,您必须将第二个循环嵌入到第一个循环中。这就是变量customer在第二个循环中未知的原因。它必须是这样的:

@foreach(var customer in Model) {
    @Html.DisplayFor(m => customer.LastName)

    @foreach(var order in customer.orders) {
        <div>Display some order props:
            @Html.DisplayFor(m => order.OrderName)
        </div>
    }
}
于 2012-11-22T10:11:25.417 回答