ASP.NET’den alışkın olduğumuz ContentPlaceHolder’lar ile ilgili aynı işi gören section’ı göreceğiz bu makalemizde Layout içerisinde bir section tanımlayarak tüm sayfalarda bu section’u nasıl kullanabileceğimiz ile ilgili bilgiyede makalenin devamından ulaşabilirsiniz.
ASP.NET MVC’de section tanımlama ve kullanma
Öncelikle bir layout sayfasına section tanımının nasıl yapıldığını görelim.
1 2 3 4 5 6 7 8 | @if (IsSectionDefined("LeftSide")) { @RenderSection("LeftSide", false) } else { @:Section Tanımı yapılmamış } |
Üstteki kodda aslında section tanımlayabilmek için @RenderSection("LeftSide", false)
kodu yeterlidir fakat IsSectionDefined()
metodunu kullanarak eğer bu layout’u kullanan sayfada LeftSide
section’u tanımlanmış ise RenderSection()
metodunu çağırıyoruz eğer view’de LeftSide
adlı Section
kullanılmamış ise Sayfaya Section tanımı yapılmamış
yazıyoruz.
RenderSection metodunun ilk parametresine oluşacak section’ın adı ikinci parametrede ise section’ın tanımlandığı layout’u kullanan view’lerde kullanımının zorunlu olup olmayacağı belirtiliyor eğer true değeri verirseniz bu LeftSide section’un tanımlandığı Layout’u kullanan tüm viewlerde LeftSide section’unu kullanmak zorundasınız aksi durumda hata verecektir biz zorunlu olmasını istemediğimiz için false değerini verdik parametreye.
Not: Section tanımını Layout view’lerinden yapıyoruz ve section kullanımını Layout’a bağlı viewlerden gerçekleştiriyoruz.
View’den section kullanımı ise alttaki kodda yer aldığı gibi yapılmaktadır.
Index.cshtml
1 2 3 4 5 6 | @section LeftSide{ <a href="#">Ana Sayfa</a> <a href="#">Galeri</a> <a href="#">Hakkımızda</a> <a href="#">İletişim</a> } |
Ayrıca eğer LeftSide section tanımını yapmazsak nasıl bir sonuçla karşılaşacağız bunuda Index1.cshtml dosyası oluşturup ardından içerisine LeftSide adlı section tanımı yapmadan görelim.