Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Asp.NET MVC Razor’da HTML Etiketlerini Farklı İf Bloklarında Kapatıp Açmak

Asp.NET MVC Razor mimarisiyle çalışırken listeleme işlemlerini genellikle prosedürel döngüler kullanarak, HTML taglarını tekrarlayıp gerçekleştiriyoruz.Bazen tekrarlanan(Repeat) HTML kontrollerinin başlangıç ve bitiş etiketlerini if şartlarıyla kontrol edip, duruma göre yazdırma işlemi yapıyoruz.İşte bu durumda olası bir hatayla karşılaşıyoruz ve derleyicimiz if scope(köşeli parantezler)’larını bir anda pasifleştiriyor.Konumuza en iyi açıklamayı bu örneklendirmeyle yapabileceğimden dolayı ve şahsen bu şekilde çalışırken bu olası durumla karşı karşıya kaldığımdan dolayı mevzuyu bu şekilde prototiplendirmeyi uygun gördüm.Şimdi gelin bu hatayı görelim ve çözümünü beraber inceleyelim.

Burada örneklendirme yaptığım kodlarda algoritmik mantıktan ziyade konunun ana temasına değindiğim fikre odaklanmanızı tavsiye ediyorum.

Öncelikle aşağıdaki kod bloğunu inceleyelim.

Bu kod bloğundaki durumu izah etmem gerekirse, for döngüsünün işlevi neticesinde if kontrolleriyle “Sayac” değişkenimiz kontrol ediliyor ve şartın doğru olması durumunda “<div> </div>” kontrolleri arasında bir yazı yazdırılıyor.

Şimdi ise aşağıdaki kod bloğunu inceleyelim.

Bu kod bloğunda ise, for döngüsü işlevdeyken “Sayac” isimli değişkenimiz 1 değerine sahip olduğu zaman “<div>” etiketini açıyoruz ve diğer durumlarda “</div>” etiketini kapatarak araya yazımızı yazdırmaya çalışıyoruz.Lakin gördüğünüz gibi derleyici bu işleme izin vermemekte ve if şartının else bloğunun scopelarını pasif hale getiriyor.İşte bu olası hatadan kurtulmanın birden fazla yöntemi mevcuttur ama ben size en sağlıklı yöntemi göstereceğim.(Not: Bu arada kod bloglarındaki Sayac değişkenin değerini döngüde birer birer arttırmam gerektiğini unutmuşum.Bu ahval çok önemli değildir.)

Bu kod bloğunu incelerseniz eğer, olası hata veren HTML kontrolünün açılış ve kapanış taglarının başına “@:” işareti koyarak sorunu çözmüş bulunmaktayız.

MVC Razor mimarisinin getirdiği sonsuz zenginliklerin yanında böyle ufak tefek ama çözümü saatler bulan hatalarda kaçınılmaz değildir.Eee artık tecrübeyle bu engeller aşılacak, zamanla bu View diyarlarında eski kulağı kesiklerden olacağız inşallah 🙂

Sonraki yazılarımda görüşmek ümidiyle..
İyi çalışmalar..

Mobil sürümden çık