Mam częściowy widok w projekcie MVC 4, który jest silnie wpisany. Wymaga zbioru IEnumerable zbioru bazy danych. W tej tabeli znajdują się identyfikatory, nazwy i identyfikatory ParentID do przechowywania hierarchicznego połączenia między rekordami. Pogląd, że wywołuje częściowy widok jest również silnie wpisane, trwa całą bazę danych jako modelu i przekazuje tabelę kategorię do częściowego widzenia, jako przeliczalnego kolekcji:ASP.NET MVC 4 generowanie widoku drzewa z rekurencyjnym widokiem częściowym
@Html.Partial("_TreeCategories", @Model.Categories.ToList())
I częściowego widzenia, chcę najpierw wziąć węzły główne, więc mogę rozciągnąć całe drzewo w sposób rekursywny. W tabeli bazy danych wszystkie rekordy są uważane za węzły główne z ParentID == null.
Więc ogólnie, moim sposobem na to będzie wyglądać:
@model IEnumerable<TreeCollections.OpenAccess.Category>
@if (Model.ToList().Count >= 0)
{
@if (Model.ToList()[0].Parent_id == null)
{
<text><ul id="navigation"></text>
}
@foreach (var node in @Model)
{
<li><a href="[email protected]">@node.Name</a>
@foreach (var subNode in @Model.Where(s => s.Parent_id == node.Id))
{
@Html.Partial("_TreeCategories", subNode)
}
</li>
}
@if (Model.ToList()[0].Parent_id == null)
{
</ul>
}
}
więc sprawdzić, czy pierwszy element w ParentID modelu jest null, a jeśli tak, to należy go utworzyć < ul> tag id "navigation", więc plugin jquery może rozpoznać, że ma to być kontrola widoku drzewa. Następnie tworzy tag listy z wywołaniem rekurencyjnym wewnątrz. Wywoływany rekursywnie widok częściowy uwzględnia dzieci węzła jako model. I na koniec, jeśli doszliśmy do końca renderowania częściowego widoku, a my jesteśmy na "poziomie głównym", powinno się napisać zamykający ul> tag
Jednak są pewne problemy. Po pierwsze, na końcu, że zamknięcie nieuporządkowanego tagu listy jest błędne, VS nie może odnaleźć pasującego do niego znacznika początkowego. Po drugie, nie wiem dlaczego, ale na górze mogę wstawić tag startowy < między tagami i nie mogę tego zrobić na poniższym tagu zamykającym. Ale nie jestem pewien na temat tych tagów ul> <, też uważam, że są one błędne.
Proszę, pomóżcie mi, utknąłem z tym od wielu dni.
Dziękuję, to jest tak oczywiste, a jednak przez kilka dni nie mogłem się z tym pogubić ... Właśnie przeinstalowałem cały system na moim komputerze, to zajmuje trochę czasu, zanim ponownie pobiorę i zainstaluję Visual Studio, aby spróbować ale przynajmniej teraz widzę ten wzór! Dziękuję bardzo! – user2082422
w większości przypadków, z przyjemnością pomogę –
Przy okazji, jaki rodzaj mapowania rodzic-dziecko polecacie? Wybrałem tę metodę "ID - ParentID", ponieważ jest to jeden ze sposobów implementacji hierarchicznej struktury danych w relacyjnym kodzie danych, takim jak baza danych. W tabeli ID kategorii jest klucz podstawowy, ParentID to klucz obcy, który odnosi się do Categories.ID. – user2082422