C# Access child members of hierarchy with foreach

家住魔仙堡 提交于 2019-12-02 17:35:29

问题


I am trying to make Foreach work for the html razor below. At the end of the day, I want ShoppingCart to be a list of CartLines. I want to get rid of the [0] statement, and make it variable. Any solution or optimal method would help. Feel free to edit the class also.

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

@model IEnumerable<ShoppingCart>
@foreach (var item in Model)
{
   <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Items[0].Product)
        </td>

回答1:


Iterate over your list elements, not your class:

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

@model ShoppingCart
@foreach (var item in Model.Items)
{
   <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Product)
        </td>



回答2:


so you are going to need a nested foreach:

@foreach (var cart in Model)
{    
    @foreach (var line in cart.Items )
    {
        @Html.DisplayFor(modelItem => line.Product) 
    }
}


来源:https://stackoverflow.com/questions/52798897/c-sharp-access-child-members-of-hierarchy-with-foreach

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!