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