ASP.NET Core 5/Razor sentaksı

Vikikitap, özgür kütüphane

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