VIEW
Projede View kısmı web site açıldıgında kullanıcinın gördüğü kısma denk gelir yani sitenin görünen tarafı ön yüzü, sizin siteyi açtığınızda karşılaştıgınız kısım ASP.NET MVC projelerinde VIEW kısmında kodlanır. Bu kısım sitenin görsel kısmı olduğuna göre doğal olarak bu kısımdaki kodların %90-95 kadarı HTML-XHTML , CSS , JavaScript vb front endlerden oluşmaktadır. Sizin karşınıza çıkan ekranda yaptığınız her işlemde view üzerinden controller’a gider ve sunucu tarafından değerlendirilir.
Viewların uzantısı cshtmldir.
CONTROLLERDAN VİEW’A VERİ GÖNDERME
Zaman zaman controllerdan bilgileri alıp view’da görüntülememiz gerekebilir. Bunun için bazı yöntemler vardır bunlar
- ViewBag
- ViewData
- TempData
VIEWBAG
viewBag.DegiskenIsmı = “Deger”;
seklinde tanımlanır.
View içerisinde de @ViewBag.DegiskenIsmı olarak kullanılabilir.
VIEWDATA
ViewData[“UrunAdi”] = “Deger”;
View içerisinde de @ViewData[“UrunAdi”] ile kullanılabilir.
TEMPDATA
TempData[“Mesaj”]=”Deger”;
View içerisinde de @TempData[“UrunAdi”] ile kullanılabilir.
Aralarındaki fark ?
TempData’yı başka Viewlardan da görüntüleyebilirken ViewData ve ViewBag’ı görüntüleyemeyiz.
TempData geçicidir f5ten sonra yeni bir postta yok olur
LAYOUT OLUŞTURMA
Bazı sitelerde ne kadar sayfa değiştirirseniz değiştirin bazı bölümler sabittir. Mesela sitedeki butonlar kısmı anasayfa kısmı bazı kısımlar siz ne kadar sayfa değiştirirseniz değiştirin sabittir. Bunlar madem sabit bunların her birini ayrı ayrı sayfalarda tekrar tanımlamak mantıksızlıgın daniskasıdır. İşte layout tam da bu noktada devreye girer. Sizin her sayfada tanımladıgınız ortak frame outlar bir noktada tanımlanır ve ortak olan tüm sayfalarda kullanılır.
Yukarida bir layout ornegi görmektesiniz. Bu layoutu kullanıdınız tüm viewlarda burda belirlenen kısımlar otomatik olarak yerleşir. O viewda kullanılacak kısımlar ise @RenderBody() yazan yerde tanımlanır yani @RenderBody sizin diğer viewlarınızdaki değişken kısımdır.
İç içe layout oluşturma
Parçalı Layout
@RenderPage() layout içinde tek bir bölümün değişmesine izin verirsek
@RenderSection(“Seciton ismi”,”Gecerlilikboolean”) Birden fazla kısmın değişmesini istiyorsak bu metodu kullan ırız
PARTIAL VIEW
Yeni bir view tanımlanır bu shared’da tanımlanır ve içine değişken bilgiler konur sonra diğer telefonlarda @Html.Partal(“viewIsmi”) olarak kullanılır
VIEWSTART
View startı kullanarak layoutları tek tek view’a tanımlamadan varsayılan view olarak kullanıp her viewda otomatik başlamasını sağlayabilirsiniz. Normal şekilde view shared kısmında layout oluşturukur. Daha sonra views/shared/_Layout.cshtml klasörüne girilir. Oluşturdugumuz layout varsayılan layout kısmına yazılır. Bundan sonra her view’ın layoutu otomatik olarak tanımlanmıştır