在C#

时间:2018-06-26 16:06:01

标签: c# asp.net list

我有一个名为Models的列表,其中包含ID,标题,变体。 Variants是一个包含其他元素Id,ModelID,Title的列表。 我的问题是如何遍历Variants列表,该列表是Models的子列表。

Repository.cs

public class Repository : IRepository
{
    private List<ModelSearch> _list = new List<ModelSearch>();
    public Repository()
    {
        populateList();
    }

    private void populateList()
    {
        _list.Add(new ModelSearch
        {
            ID = 1,
            Title = "Scorpio",
            Variants = new List<Variant> { 
                new Variant { ID = 1, ModelID = 1, Title="scorpio1" },
                new Variant { ID = 2, ModelID = 1, Title="scorpio2" },
                new Variant { ID = 3, ModelID = 1, Title="scorpio3" }
            }
        });

        _list.Add(new ModelSearch
        {
            ID = 2,
            Title = "Bolero",
            Variants = new List<Variant> { 
                new Variant { ID = 1, ModelID = 2, Title="Bolero1" },
                new Variant { ID = 2, ModelID = 2, Title="Bolero2" },
                new Variant { ID = 3, ModelID = 2, Title="Bolero3" }
            }
        });
    }

    public IEnumerable<ModelSearch> GetAll()
    {
        return _list.AsEnumerable();

    }
}

这是我的Index.cshtml文件:

@foreach (var item in Model) 
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Variants.First().Title)
        </td>    
    </tr>
}

我还希望与此表一起显示相应的变体。我该如何实现?

ModelSearchController.cs

public class ModelSearchController : Controller
{
    private IRepository _repo;

    public ModelSearchController()
    {
        _repo = new Repository.Repository();
    }

    public IActionResult Index()
    {
        var modelList = _repo.GetAll(
        return View(modelList);
    }
}

1 个答案:

答案 0 :(得分:7)

如果只想显示所有变体标题,则需要一个内部循环,例如,在这里,我将标题放在ul元素中:

@foreach (var item in Model) 
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            <ul>
                @foreach(var variant in item.Variants)
                {
                    <li>@variant.Title</li>
                }
            </ul>
        </td>

    </tr>
}