Layout kavramı, sayfamızın değişmeyen kısımlarını layout içinde tutuyoruz vei değişecek yerlerini razorla dolduruyoruz. Layoutlar shared klasörü içersinde tutulur ve “_layout.cshtml” şeklinde isimlendirilir.
Layout içindeki kavramlar:
- @ViewData[”isim”] → sayfadan sayfaya değişecek textler için bunu kullan. İsimi değiştirerek birden fazla kez kullanılabilir.
- @ViewBag.isim → sayfadan sayfaya değişecek textler için bunu kullanabiliriz viewDatadan farkı yoktur. isim değiştirilerek birden fazla kez kullanılabilir.
- @RenderBody() → sayfadan sayfaya değişecek büyük kısım için bunu kullan. Sadece bir kez kullanılabilir. View eğer layout kullanıyorsa view içine yazdığınız kodlar layoutun @RenderBody() kısmına gider.
- @RenderSection(”menu”,false) → sayfadan sayfaya değişen ufak kısımları sectionlara bölerek ekleyebiliriz. Birden fazla kez isim değiştirilerek kullanılabilir. View eğer layout kullanıyorsa view içinde ‘@section menu’ içine yazdıklarımız layoutdaki ‘@RenderSection(”menu”)’ kısmına gider. bu özellik layoutda tanımlandığı zaman kullanıldığı her viewde rendersection metodu kullanılması gerekir eğer bunu istemiyorsak method içerisine parametre olarak false değerini giriyoruz. ilk parametresi section ismi ikinci parametresi her viewde kullanılsın mı kullanılmasın mı? onu soruyor.
Bu kavramların view içinde kullanımı:
View içinde c# kodları yazıcaksak razor içinde yazmalıyız.
@{
string isim="Bilgehan";
}
@{
ViewData["isim"]="Home Page";
ViewBag.isim = "Home Page"
Layout = null; //Sayfada hangi layoutu kullanıcaksak belirtiyoruz.
}
@section menu
{
<li>Card</li>
<li>Project</li>
<li>Info</li>
}