CodeBehind'de Return Template: döngüleri View'dan çıkarma yaklaşımı
CodeBehind adlı .NET Core web framework'ü, dinamik HTML üretiminde döngü ve koşulları View'dan ayırmak için Return Template mekanizmasını tanıtıyor. Yaklaşım, Razor'da @foreach ile karışan sunucu kodunu ya da Controller içinde string birleştirmeyle kurulan HTML'i ayrı bir template katmanına taşıyor. Razor ve Standart sözdiziminin ikisinde de çalışan yapı, iç içe ve çok aşamalı şablon çözümlemesi yapıyor.
Kilit noktalar
- Return Template, HTML içinde tanımlanan bir template değişkeninin işlem sırasında üretilen içerikle değiştirilmesi mantığına dayanıyor
- Çözümleme özyinelemeli çalışıyor: iç içe template'ler birden fazla aşamada çözülüyor
- Hem Razor hem Standart sözdizimi destekleniyor, her birinin kendi notasyonu var
- Döngü View'dan çıkıp ayrı bir bloğa taşınıyor; Controller içinde HTML string birleştirmek gerekmiyor
- CodeBehind NuGet paketi olarak yayınlanıyor ve kendi View modelini getiriyor, ASP.NET Core'un parçası değil
CodeBehind, View'ın yalnızca HTML yapısını tarif etmesi, sunucu tarafı kodun ise veriyi işlemesi fikri üzerine kurulu. Return Template'ler bu ayrımı döngülerde de korumayı amaçlıyor: HTML içinde bir template değişkeni tanımlanıyor, ayrı bir blokta döngü bu değişkeni tekrar tekrar üretiyor ve sonuç yerine yerleşiyor. Ardından kalan değişkenler gerçek değerlerle dolduruluyor, böylece işlem birkaç aşamada tamamlanıyor.
Örnek olarak bir navigasyon menüsünde menü öğesinin HTML'i bir kez yazılıyor, döngü ise yalnızca bu şablonu çağırıyor; başlık ve adres gibi alanlar ayrı template'lerden geliyor. Aynı yapı Razor ve Standart sözdiziminde farklı notasyonlarla kullanılabiliyor ve CodeBehind iki sözdizimi arasındaki geçişleri kendisi yönetiyor. Framework NuGet üzerinden yayınlanıyor; ASP.NET Core ile aynı şey olmadığını, kendi View modelini getirdiğini unutmamak gerekiyor.
Gerçek dünyada kullanımı
- Veritabanından gelen sayfa listesine göre dinamik navigasyon menüsü üreten bir site
- Aynı kart yapısının onlarca kez tekrarlandığı ürün listeleme sayfaları
- İç içe geçmiş layout ve parça şablonları olan karmaşık sayfa düzenleri
- Ön yüz ve arka uç üzerinde farklı geliştiricilerin aynı View üzerinde çalıştığı ekipler
Neden önemli
Razor'da kontrol akışını HTML'den tamamen ayırmak isteyen ekipler için alternatif bir model sunuyor; ancak CodeBehind'e özgü olduğu için ASP.NET Core projelerine doğrudan taşınamıyor.