MVC Partial View Kullanimi ve Model Gönderimi

29 Kasım 2013
Posted by Çağatay Yıldız
19399 Views
MVC

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
PartialView
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.

@Html.Partial("Partial/UrunListe")

Yukarıda tanımadlığımız gibi uzun bir şekilde klasör yolunu da verebiliriz.

@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.

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

@using PartialViewTest.Models.Data

Daha sonra viewdata dan gelen verimizi ienumerable tipine cast ediyourz.

@{
    IEnumerable<Products> sidebarProduct = ViewData["UrunListesi"] as IEnumerable<Products>;
}

Sıra geldi sidebarProduct isimli listemizi partialımıza yollamaya. İşlem oldukça basit.

@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.

@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