ASP.NET Core 5/Razor sentaksı
Razor, HTML ve C# kodlarının nasıl birbirinin içine geçebileceğini düzenleyen bir teknolojidir. ASP.NET Core'da view dosyalarının oluşturulmasında kullanılır.
Razor yorumları
[değiştir]Razor @* ve *@ arasına yazılmış her şeyi yorum sayar.
C# kod bölgesi oluşturma
[değiştir]@{ ve } arasına isteğimiz gibi C# kodları yazabiliriz. Örnek:
<html>
<head>
<title></title>
</head>
<body>
@{
int a=5;
a++;
}
</body>
</html>
Farklı kod bölgelerindeki kodlar tek bir dosyada sayılır. Dolayısıyla daha önce farklı bir kod bölgesinde tanımlanmış değişkenlere erişebiliriz. Örnek:
<html>
<head>
<title></title>
</head>
<body>
@{
int a=5;
}
<h1>Ara Başlık</h1>
@{
a++; //a artık 6 oldu.
}
</body>
</html>
C# içinde HTML kullanımı
[değiştir]HTML içinde C# kullanımını zaten az önce gördük. Şimdi C# içinde HTML kullanımına sıra geldi. C# içinde HTML kullanabiliriz. Bunu ilgili yerde sayfaya çıktı vermek amacıyla kullanırız. Razor, C# kodu içinde HTML etiketleri içine alınmış bir metin gördüğünde bunu sayfaya basar. Örnek:
@{
int a=5;
a++;
<p>Paragraf</p>
}
<text> etiketi kullanımı
[değiştir]Eğer sayfaya HTML kodu çıktısı vermek istemiyorsak, ilgili yere salt metin çıktısı vermek istiyorsak ilgili metni <text> ve </text> etiketleri arasına alırız:
@{
int a=5;
a++;
<text>Paragraf</text>
}
Tek satırlık işlemler
[değiştir]İlgili yerde tek satırlık C# kodu yazacaksak ve bu kodun sonucu ekrana çıktı olarak verilecekse bunun için küme parantezli notasyonu kullanmaya gerek yoktur. Örnek:
<p>5 ve 2'nin toplamı @(5 + 2)'dir.</p>
Ayrıca bu tür durumlarda C# kodunu noktalı virgül ile de sonlandırmayız.
Boşluk içermeyen tek satırlık işlemler
[değiştir]İlgili yerde boşluk içermeyen tek satırlık C# kodu yazacaksak ve bu kodun sonucu ekrana çıktı olarak verilecekse normal parantezli notasyonu da kullanmayız. Yalnızca C# ifadesinin başına @ koyarız. Örnek:
<p>
Hoşgeldiniz @kullanici. Bugün günlerden @DateTime.Now.DayOfWeek.
</p>
Yine burada da komutu noktalı virgül ile sonlandırmayız.
Koşullar ve döngülerin kullanımı
[değiştir]Koşullar ve döngüler zaten kendisi kod bloğu oluşturduğu için ayrıca kod bloğu oluşturmaya gerek kalmadan koşullar ve döngüleri kullabilmektedyiz. Örnek:
@if(sayi==5)
{
<text>sayi 5'e eşit</text>
}
else
{
<text>sayi 5'e eşit değil</text>
}
Bildiğiniz üzere C# programlama dilinde koşul yapıları ve döngüler tek komut içeriyorsa bunları küme parantezleri içine almaya gerek yoktur. Ancak eğer yukarıdaki örnekteki gibi küme paraztezleri C# kodu değil de HTML kodu içeriyorsa bunları küme parantezleri içine almak zorundayız.
HTML içindeki C# içindeki HTML'in içinde C# kullanma
[değiştir]Bu tür karmaşık durumlar çok olasıdır. Zaten Razor'un gücü buradan gelmektedir. Örnek:
<html>
<head>
<title></title>
</head>
<body>
@{
int a = 5;
for(int b=0;b<a;b++)
{
<text>@b</text><br />
}
}
</body>
</html>
Burada önemli olan nokta for döngüsünün içindeki <text> etiketinin içinde C# kullanabilmek için @ sembolünü kullanmamız gerektiğidir. Çünkü bir içeriği herhangi bir HTML etiketiyle veya <text> etiketiyle sarmaladığımız zaman artık orası HTML olmuştur. Tekrar C#'a dönmek için @ sembolünü kullanmalıyız