2017-06-14 2 views
1

Ich versuche eine View zu erstellen, die eine Liste von Kategorien enthält. Diese Kategorien haben Unterkategorien und einige Unterkategorien haben auch Unterkategorien.Wie erstelle ich eine Liste von Kategorien mit mehreren Unterkategorien?

Im Speicher habe ich eine Liste von Categorie-Objekten.

Mein Categorie Objekt:

namespace modellen 
{ 
    public class Categorie 
    { 
     public int Id { get; set; } 
     public string Naam { get; set; } 
     public int HoofdCategorieId { get; set; } 

    } 
} 

Meine Ansicht:

@using modellen 
@model List<Categorie> 

@{ 
    ViewBag.Title = "Categorieen"; 
} 

<h2>Categorieen</h2> 

<ul> 
    @foreach (Categorie c in Model) 
    { 
     if (c.HoofdCategorieId == 0) 
     { 
      <li>@c.Naam </li> 
     } 
    } 
</ul> 

Wenn die Eigenschaft "HoofdCategorieId" eines Objektes 0 ist, bedeutet es nicht eine Unterkategorie von irgendetwas ist. Wenn die Eigenschaft "HoofdCategorieId" beispielsweise 2 ist, bedeutet dies, dass es sich um eine Unterkategorie eines Objekts handelt, bei der die Eigenschaft "Id" ebenfalls 2 ist.

Ich kann nicht herausfinden, wie ich von hier aus fortfahren würde Unterkategorien, die unterhalb der jeweiligen Kategorie erscheinen.

Wie würde ich das tun?

+0

Mit der Antwort von [Anzeige hierarchischer Daten aus der Datenbank] wollen (https://stackoverflow.com/q/22666357/205233) erlauben würde, ein beliebige Schachtelungstiefe, aber Sie müssen Ihr Modell ändern. – Filburt

Antwort

1
@foreach (Categorie c in Model.Where(w => w.HoofdCategorieId == 0)) 
{ 
    <li>@c.Naam </li> 
    foreach (Categorie subC in Model.Where(w => w.HoofdCategorieId == c.Id)) 
    { 
     <li style="margin-left:10px;">@subC.Naam </li> 
     foreach (Categorie subSubC in Model.Where(w => w.HoofdCategorieId == subC.Id)) 
     { 
      <li style="margin-left:20px;">@subSubC.Naam </li> 

     } 
    } 
} 

Verwendung Where von Linq zu Schleife durch die Elemente, die Sie

Verwandte Themen