Bu yazımızda MVC de partial view kullanıp bu view içerisne başka bir
sayfadan model yollayacağız. Web Formda User Control yerine MVC de bu
PartialView leri kullanacağız. Fark olarak Partial Viewler User
Controlde bulunan ViewState, PostBack gibi özellikleri barındırmazlar.
Direk yolladığımız model üzerinden işlem yaparlar. Zaten MVC genel
mimarisi de buna göre dizayn edilmiş. Tekrar etmemiz gereken nesneleri,
html sayfalarını rahatlıktla bu şekilde kullanabiliriz.
Öncelikle bir partialview ekliyoruz. View Kısmından Add View dedikten
sonra karşımıza gelen ekrandan Create as a partial view seçeneğini seçip
Partialımız oluşturuyoruz
Oluşturduğumuz View içerisi boş bir şekilde ekrana gelecektir. Bu
partialımızı başka Viewlerde kullanmak istersek dosya yolunu belirtip
rahatlıkla kullanabiliriz. Örneğin oluşturduğumuz UrunListe isimli
viewpartial home klasörünün içerisinde oluşturduğumuz partial klasöründe
olsun.
1
|
@Html.Partial( "Partial/UrunListe" )
|
Yukarıda tanımadlığımız gibi uzun bir şekilde klasör yolunu da verebiliriz.
1
|
@Html.Partial( "/Views/HtmlParts/HelpSideBarPart.cshtml" )
|
Şimdi gelelim bu partialı çağırdığımız view içerisinden buraya model
gönderimine. Northwind database kullanarak Product tablosunu View
kısmından direk Partial ıma yollamak istiyorum. Öncelikle Contoller
kısmında Product tablomuzdaki verileri saklayacak bir ViewData
oluşturup içini dolduruyoruz.
1
|
ViewData[ "UrunListesi" ] = db.Products.ToList();
|
Sıra geldi View kısmında bu listemizi yakalayıp partial view kısmına
göndermede. Öncelikle View kısmında using bölümüne projemizde
isimlendirdiğimiz modelimizi eklemeyi unutmayalım. Ben Model Klasörü
içerisinde Data isimli bir klasör açıp modelimi ona ekledim
1
|
@ using PartialViewTest.Models.Data
|
Daha sonra viewdata dan gelen verimizi ienumerable tipine cast ediyourz.
1
2
3
|
@{
IEnumerable<Products> sidebarProduct = ViewData[ "UrunListesi" ] as IEnumerable<Products>;
}
|
Sıra geldi sidebarProduct isimli listemizi partialımıza yollamaya. İşlem oldukça basit.
1
|
@Html.Partial( "Partial/UrunListe" ,sidebarProduct)
|
Oluşturduğumuz Partial içerisinde modele bu listeyi atayıp
dilediğimiz gibi kullanabiliriz. Partial da ise modeli şu şekilde
yakalıyoruz.
1
|
@model IEnumerable<PartialViewTest.Models.Products>
|
Burada gönderdiğimiz tiple yakaladığımız tipin aynı olmasına dikkat
etmemiz gerekmektedir. Dilersek bu işlemi jquery ile de çok basit bir
şekilde yapabiliriz. Bir sonraki yazıda bu partialımızı direkt jquery
ile dolduracağız
http://cagatayyildiz.com/mvc-partial-view-kullanimi/
Hiç yorum yok:
Yorum Gönder