【问题标题】:C# Access child members of hierarchy with foreachC# 使用 foreach 访问层次结构的子成员
【发布时间】:2018-10-14 02:07:14
【问题描述】:

我正在尝试让 Foreach 为下面的 html 剃须刀工作。归根结底,我希望 ShoppingCart 成为 CartLines 的列表。我想摆脱 [0] 语句,并使其可变。任何解决方案或最佳方法都会有所帮助。也可以随意编辑课程。

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>

【问题讨论】:

    标签: c# razor asp.net-core tag-helpers


    【解决方案1】:

    所以你需要一个嵌套的 foreach:

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

    【讨论】:

    • 缩写为只显示循环,您在其中构建 html 时不经意间
    • 必须有一个更简单的方法,我只是想为 (List of Cartlines) = ShoppingCart 创建一个同义词,现在我必须进行双 foreach,希望有一个 C# 库创建同义词的函数
    • 我不能这样做吗?使用 ShoppingCart =IEnumerable;
    【解决方案2】:

    遍历您的列表元素,而不是您的类:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多