Asp .Net MVC'de içiçe sınırsız ağaç yapısı
İçiçe sınırsız ağaç yapısı asp .net mvc'de nasıl yapılır? İşte cevabı:
Önce MODEL 'i görelim.
Görüldüğü gibi modeli Index metodunda doldurduktan sonra View'e gönderiyoruz. Modelin alt kategorilerini LoadChildren methodu dolduruyor. Bu method kendini çağıran(recursive) bir özelliğe sa.
Şimdi de VIEW'e bakalım.
Yukarıda gördüğünüz gibi, MVC nin yapısında bulunan yardımcı method ile, view tarafında kendini çağıran(recursive) bir method oluşturabiliyoruz ve bu methodu yine view tarafında kullanabiliyoruz.
Sonuçta oluşan içiçe liste yapısı şöyle birşey oluyor:
Önce MODEL 'i görelim.
public class KategoriAgac { public int KategoriId { get; set; } public string KategoriAdi { get; set; } public int? BagliKategoriId { get; set; } public List<KategoriAgac> Evlatlar { get; set; } }Şimdi de CONTROLLER'i görelim.
public ActionResult Index() { IEnumerabletumKategoriler = from p in _kategorilerTablo.Kategoriler select new KategoriAgac() { KategoriId = p.KategoriId, KategoriAdi = p.KategoriAdi, BagliKategoriId = p.BagliKategoriId }; var ataKategori = tumKategoriler.Single(m => m.BagliKategoriId == null); LoadChildren(ataKategori, tumKategoriler); return View(ataKategori); } public void LoadChildren(KategoriAgac buKategori, IEnumerable tumKategoriler) { buKategori.Evlatlar = tumKategoriler.Where(m => m.BagliKategoriId == buKategori.KategoriId).ToList(); foreach (var evlatKategori in buKategori.Evlatlar) { LoadChildren(evlatKategori, tumKategoriler); } }
Görüldüğü gibi modeli Index metodunda doldurduktan sonra View'e gönderiyoruz. Modelin alt kategorilerini LoadChildren methodu dolduruyor. Bu method kendini çağıran(recursive) bir özelliğe sa.
Şimdi de VIEW'e bakalım.
@ShowTree(Model)@Html.Hidden("VerEtiketler", Url.Action("VerEtiketler", "Sor")) @helper ShowTree(KategoriAgac kategoriAgac) { @foreach (var evlat in kategoriAgac.Evlatlar)
- {
Yukarıda gördüğünüz gibi, MVC nin yapısında bulunan yardımcı method ile, view tarafında kendini çağıran(recursive) bir method oluşturabiliyoruz ve bu methodu yine view tarafında kullanabiliyoruz.
Sonuçta oluşan içiçe liste yapısı şöyle birşey oluyor:
- Mühendislikler
- Elektrik Elektronik
- Bilgisayar
Controller sayfasında bu yanlış değilmi
YanıtlaSilMerhaba, yanlış olduğunu düşündüğünüz şey tam olarak nedir ?
SilMerhaba bu çalışmanız için teşekkür ederim fakat şöyle bir hata alıyorum.
YanıtlaSilSeverity Code Description Project File Line Suppression State
Error CS1061 'IEnumerable' does not contain a definition for 'Sigle' and no extension method 'Sigle' accepting a first argument of type 'IEnumerable' could be found (are you missing a using directive or an assembly reference?)
Bu yorum yazar tarafından silindi.
SilMerhaba,
SilHata için kısa bir araştırma yaptım. Sanırım aşağıda verdiğim linkte sizin sorununuzu çözecek. Açıklayacak olursam
View'inizde model olarak IEnumerable kullanırsanız, bu view'in içinde @Model.Sigle gibi bir kullanım yapamazsınız. Yani
1- Yanlış olan:
@model IEnumerable
...
@Model.Sigle
-------------------------------------------------------------------------------------------------
2- Doğru olan (Falan nesnesi, Sigle'ı içermesi gerekiyor tabi):
@model Falan
...
@Model.Sigle
İşinizi görür umarım.
------------------
http://stackoverflow.com/questions/36240150/cs1061-ienumerable-does-not-contain-a-definition-for-and-no-extension-me
merhaba bende aynı hatayı alıyorum ve çözümü tam anlayamadım;
SilSingle nesnesini nerde tanımlamalıyız veya ayrıntılı bir anlatı yokmudur?