Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET MVC 4.0 Razor View Engine

Asp.NET MVC 3 sürümü itibaren gelen ve MVC 4.0 sürümünde de geçerli olan “View Engine” yapısı, “Server Side” yani sunucu taraflı kodlama yapısıyla, “Client Side” dediğimiz kullanıcı taraflı kodlamayı birleştiren bir teknolojidir.Uzun lafın kısası, web programlama alanında HTML tagları arasında, programatik işlemleri yapmamızı sağlayan MVC mimarisinin bir ürünüdür.Bu makalemizde, Asp.NET MVC 4.0 versiyonunda, Razor View Engine incelemesi yapacağız.

Razor
Microsoft tarafından MVC 3 versiyonunda geliştirilmiş ve MVC 4 versiyonunda mevcut bulunan bir teknolojidir.Amacı yukarıda bahsettiğimiz gibi, web sayfalarına programatik kodları gömmek için oluşturulmuş bir yapıya sahip.

Razor teknolojisinin derlenme işleyişinden bahsedersek eğer, kullanıcı tarafından bir sayfa talebi geldiği zaman, önce o sayfadaki Server Side(Sunucu taraflı) kodlar çalışacak, ardından Client Side(Kullanıcı taraflı) kodlar çalışacaktır.Sunucu taraflı kodlarda istediğiniz her türlü programatik işlevi gerçekleştirebilirsiniz.

Razor teknolojisinin hedefi ise, az kodla çok iş yapmaktır.En güzel özelliklerinden biriside HTML kodlarının sunucu taraflı kodların çalıştığı scopelar içerisinde de tanımlanmasıdır.

Tabi ki de C# ve VB gibi programlama dillerini dört dörtlük bir uyum içinde desteklemektedir.

Bir programcı için en az önemli olan ama benim için MVC’nin en çekici noktası olan yanı da, projedeki kullanılan View katmanındaki sayfalar olsun, Master Page yapısında ki Layout sayfası olsun ya da User Control mantığında çalışan Partial View’ler olsun hepsinin uzantısı “.aspx” değil, “.cshtml” dir. 🙂 Tabi VB programcıları için ise, “.vbhtml”..
“@” Operatörü
Hatırlarsanız eğer, Asp.NET MVC 2.0 versiyonuyla ilgili yazdığım makalelerimde programatik kodlarımızı “<%..%>” etiketleri arasında yapıyorduk.MVC’nin performansı ve hızından yararlanırken bu blokların eziyeti ayrı bir dert oluyordu.Çünkü MVC 2.0 da View Engine olarak Web Form kullanıyorduk.Ancak MVC 3 ve 4 versiyonlarında Razor View Engine teknolojisi sayesinde “@” karakteriyle programatik işlemlerimizi çok rahat bir şekilde halledebiliyoruz.Örnek bir MVC 4.0 Razor View Engine projesinde herhangi bir sayfada tarih fonksiyonu sayesinde o anki dakikayı yazdıralım.

@DateTime.Now.Minute

Dikkatinizi çektiyse, programatik işlem sonucu herhangi bir blok kapatma zorunluluğumuz bulunmamaktadır.Eğer Web Form View Engine kullansaydık aşağıdaki şekilde bir işlem uygulamamız gerekecekti.

<% DateTime.Now.Minute %>

Evet, bu iki işlemin normal Asp.NET Web Form işlemlerinden gayet kolay ve sade olması haddiyle taktire şayan bir durum.Ancak insan kolayı varken az zoruda gözünde büyütüyor olsa gerek 🙂

Şimdide “@” operatörünün kullanımını inceleyelim.

@{var Adiniz = "Gençay Yıldız";}
@{var Soyadiniz = "Yıldız";}

İster yukarıdaki gibi tek satırlı kullanabilirsiniz.
İster,

@{
    var Adiniz = "Gençay Yıldız";
    var Soyadiniz = "Yıldız";
}

yukarıdaki gibi çok satırlı kullanabilirsiniz.

Yukarıdaki örneklerde de gördüğünüz gibi tek satırlı ya da çok satırlı programatik kodlarda “{-}” scopelarını kullanabiliyorsunuz.

Ben bu makaleyi C# dilinde örneklendirdiğim için ve okuyucularımında C# kullanarak tatbik ettiklerini varsaydığım için “;”(noktalı virgül) karakterinin hiç şaşmaz her scope bloğu içerisinde her kodun sonuna konulması gerektiğini unutmamanızı tavsiye ederim.

Bir sayfada iki farklı kod bloğu bulunuyorsa eğer ve bu bloklar içerisinde değişken veya referanslar varsa diğer bloktan ulaşılabilirlerdir.

@{
    char Karakter = 'A';
}
@{
    int Asci = Convert.ToInt32(Karakter);
}

Yukarıda gördüğünüz gibi bir kod bloğu içindeki char tipinden “Karakter” ismindeki değişkene, başka bir kod bloğundan ulaşılıyor ve int tipine çevrilerek ASCI kodu elde ediliyor.

Kod blokları arasında HTML tagları derleyici tarafından otomatik olarak algılanabilirler.

@{
    string Adiniz = "Gençay";
    string Soyadiniz = "Yildiz";
    <strong>Sayın</strong> <b>@Adiniz @Soyadiniz</b>
}

Burada dikkat etmeniz gereken nokta HTML tagları arasında çağırdığımız değişkenleri “@” operatörü sayesinde çağırmış bulunuyoruz.

Eğer ki kod bloğu içerisinde HTML etiketleri kullanmadan metinsel yapıda bir değer yazdırmak istiyorsak, yazacağımız değeri “yazılacak değer” arasına almamız gerekiyor.

@{
    string Gun = "Pazartesi";
    <text>Bu gün günlerden @Gun</text>
}

Unutmayalım ki, “” taglarını çok satırlık metinsel yapılarda da kullanabiliriz.Ancak tek satırlık metinsel değer yazdıracaksak, “” yerine “@:” ifadelerini de kullanabiliriz.

@{
    string Gun = "Pazartesi";
    @:Bu gün günlerden @Gun
}

“@” operatörü içerisinde programatik işlevler dışında matematiksel işlemlerde yaptırabiliriz.

@(15 + 22)
@(453 / 2)
@(3-25)

Burada dikkat etmeniz gereken nokta, “@” opearetöründen sonra süslü parantez”{…}” değil, normal paranter”(…)” açılıp kapatılıyor.

Bir önemli noktalardan biriside, Escape karakterler olan “\”, “”” gibi karakterlerin metinsel yapılarda kullanımında ki sıkıntılarıdır.Eğer bir metinsel yapının içine ters slash ya da tırnak işareti koyulmuşsa eğer, C#’ta bildiğiniz standart “\” işlemini uygulayabilirsiniz.

Ancak bu özel karakterler için kolay yöntemler mevcut.Eğer, metinin içinde tırnak kullanılıyorsa eğer, iki kere yazılmalı ve metinsel değerin başladığı tırnağın başına “@” operatörü koyulmalıdır.

@{
    string Metin = @"Metinsel değerler içinde "" tırnak olmaz  ";
}

Eğer ki, metinin içinde ters slash kullanılıyorsa, metinsel değerin başladığı tırnağın başına tekrardan “@” operatörünü koymalıyız.

@{
    string Metin = @"Metinsel değerler içinde \ ters slash olmaz  ";
}

Boşluk Kullanımı
Kod blokları içerisinde kullanılan boşluklar programın akışına etki etmezler.

@{
    string Ad =         "Gençay";
}

Ayrıca kod blokları içinde yazılan kodlar farklı satırlarda yazılsada ifadeyi etkileme durumları olmayacaktır.

@{
    string
        Ad
        =
        "Gençay"
        ;
}

Şuna dikkat etmeliyiz ki, metinsel yapıdaki ifadeler bölünerek yazılamazlar.

@{
    string Metin = "Merhaba
    Ben hatalı bir
    yazımım
    ";
}

Yukarıdaki tarzda bir metinsel yapıyı bölerek yazarsak program derlenmeyecektir.
Eğer bu şekilde metinsel yapıları bölmek istiyorsak, tırnaktan önce yine “@” operatörünü koymamız gerekmektedir.

@{
    string Metin = @"Merhaba
    Ben hatalı bir
    yazımım
    ";
}

Yukarıdaki tarzda metinsel ifadeler bölündüğünde hata vermeyecektir.

Sunucu Tabanlı Yorum ve Açıklama Satırları Eklemek
Üzerinde çalıştığımız projenin açıklamasını yapabilmek için gerekli alanlarda yorumlar ve açıklamalar ekleyebiliriz.Eğer projemizde açıklama satırları oluşturmak istiyorsak “@*..*@” operatörleri arasına yorumumuzu yazmalıyız.Bu operatörler arasına tek veya çok satırlı yorumlar yazabiliriz.

@* Bu bir açıklama satırıdır.... *@

Tabi işin güzel yanı, Razor ile kullandığımız dil her neyse onun her türlü nimetinden faydalandığımız gibi, yorum satırlarını o dilin teferruatını kullanarakta oluşturabiliyoruz.

Evet arkadaşlar, bu yazımda da Asp.NET MVC 4.0 Razor View Engine teknolojisini teferruatıyla tanımış olduk.Faydalanmanız dileğiyle..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Merhaba sevgili hocam sitenizi analiz ettim baktım güzel paylaşımlar yapıyorsunuz ve sizi herzaman takip ediyorum yararlı paylaşımlar yapıyorsunuz. Teşekkürler….

  2. Yahşimurat işanow dedi ki:

    Emeginize saglik süsli parentez koymuşum. teşekkurler

  3. seslichat dedi ki:

    Değerli hocam çok teşekkür ederim makalenizi okudum ve bilgi paylaştığınız için cani gönülden teşekkür ederim size

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir