C# .NET Mvc Recursive Fonksiyon Sonsuz Kategori Mantığı

Merhaba arkadaşlar;

Kodladım bir projede sonsuz alt kategori ile organizasyon şeması gösterme işlemini kodladıktan sonra, sadece bu bölümü sizler ile paylaşmak istedim.

İnternet üzerinde bu konuda bir çok döküman bulmanız mümkün.

MVC Model listesi ile bahsedilen konuyu yapmak için benim dökümanımı inceleyebilirsiniz.

Öncelikle birimler view model’imi ele alalım.

public class BirimlerVM:BaseVM{public int ID { get; set; }[MaxLength(50)]public string kod { get; set; }public string ad { get; set; }public int? ParentID { get; set; }}

Base VM den kalıtım almış gözüken bu view modelde yalnızca birimlerVM yi göz önünde bulundurmanız kafi.

Entity framework kullananlar bilir,

[Table("Birimler")]public class Birimler : BaseEntitie{[MaxLength(50)]public string kod { get; set; }public string ad { get; set; }public int? ParentID { get; set; }}

Birimler tablosunun repository kısmına implement edilmesi gerekmektedir.

Bu repository’i kullanabilmek için manager sınıfımızda

Repository<Birimler> birimlerRepo = new Repository<Birimler>();List<BirimlerVM> birimlerVMs = new List<BirimlerVM>();BirimlerVM BirimlerVM = new BirimlerVM();Birimler birimler = new Birimler();public List<BirimlerVM> OrganizsyonSemasi(){birimlerVMs = birimlerRepo.List().Select(x => new BirimlerVM(){ID = x.ID,ParentID = x.ParentID,ad = x.ad,}).ToList();return birimlerVMs;}

ilgili kodları yazmamız gerekir.

Ben yalnızca organizasyon şemasının çıktısını oluşturmaya yarayan kısımları sizlerle paylaşıyorum. Diğer ekle, sil, güncelle, listele kısımlarını kafanız karışmaması için paylaşmıyorum.

Birim Controller kısmında yapılması gerekenler ise;

BirimManager BirimManager = new BirimManager();public ActionResult OrganizasyonSemasi(){birimlerVMs = BirimManager.OrganizsyonSemasi();return View(birimlerVMs);}

Gelelim view kısmında;

@{ViewBag.Title = "OrganizasyonSemasi";}@model List<IK.Common.Models.BirimlerVM>@helper ShowTree(int? ID){<ul>@foreach (var item in Model.Where(x => x.ParentID == ID)){if (item != null){<li>@item.ad</li>@ShowTree(item.ID)}}</ul>}@ShowTree(4)

Kendi kendini çağıran bir showtree helper’i yani fonksiyonu ile aşağıdaki çıktıyı oluşturabilirsiniz.

Umarım yardımcı olabilmişimdir.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store