Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

MVC RenderPartial Metodu İle User Control Kullanımı

Bu yazımızda Asp.NET MVC’de RenderPartial metodunu yani Asp.NET MVC’de User Control’leri kullanmayı göreceğiz.Herzaman olduğu gibi, ilgili konu hakkında avantaj – dezavantaj sorgulamasını yapmamız gerekirse eğer, User Control’lerin browser tabanlı erişimleri engellendikleri için normal .aspx sayfalarından daha güvenlidirler.Oldukça hızlı ve benzer olan form, tasarım vb.. gibi bölümleri tekrar tekrar manuel olarak çoğaltıp kod karmaşasından kurtarırlar.Ancak, “dll” olarak çıktı alamadığımızdan dolayı, başka projelere manuel olarak taşımamız gerekmektedir.

Anımsarsanız, Asp.NET Web Form’larda User Control kullanırken, sürükle bırak mantığıyla işlem yapardık.Kullanıma hazır User Control’ümüz, dizayn edilmiş alanına sürükleyip bıraktığımız zaman import edilirdi.Ancak MVC mimarisinde iş bu şekilde yürümüyor.

“Html” propertysinde bulunan, “RenderPartial()” isimli metod sayesinde, User Control’ü sayfaya import etmiş oluyoruz.

Örnek olarak herhangi bir isimde oluşturduğumuz MVC projesinde, Controller katmanında “Iletisim(Controller)” isminde bir sınıf olduğunu ve bu Controller sınıfının içinde “Index” adında bir ActionResult tipinden metod olduğunu varsayalım.

Doğal olarak View katmanında “Iletisim” adında bir klasör olacak ve bu klasör altında “Index.aspx” adında bir dosya olacaktır.Örnek olarak bu “Index.aspx” dosyasının işlevini bir User Control aracılığıyla yapacağım.

Model katmanında da, standart bir iletişim formunda barındırılacak bilgileri tutan bir veritabanının propertyleri oluşturulmuş olsun.(Ad,Soyad,E-Posta,Mesaj vs..)

Artık User Control’umuzu View katmanına ekleyelim.Solution Explorer penceresinden View katmanında bulunan “Iletisim” klasörüne sağ tıklayarak “Add – View” diyoruz.

Bu işlemler sonucunda aşağıdaki ekran gelecektir.

Burada dikkat etmemiz gereken husus, RenderPartial metodumuzda bu oluşturduğumuz User Control’in ismini kullanacağımız için “View name” alanına anlaşılır bir isim girmeliyiz.Ayriyetten “Create a partial view (.ascx)” seçeneğini işaretlemeyi unutmayınız.Bu seçenek sayesinde bu eklediğimiz nesnenin bir User Control olduğunu belirtiyoruz.

User Control’ümüzü ekledikten sonra, aşağıdaki gibi tasarımını oluşturuyoruz.

---IletisimFormu.ascx---
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ParalelOrnek.Models.Iletisim>" %>
<% using (Html.BeginForm())
   {%>
<table>
    <tr>
        <td>
            Ad
        </td>
        <td>
            <%:Html.TextBoxFor(model => model.Ad) %>
        </td>
    </tr>
    <tr>
        <td>
            Soyad
        </td>
        <td>
            <%:Html.TextBoxFor(model => model.Soyad) %>
        </td>
    </tr>
    <tr>
        <td>
            E-Posta
        </td>
        <td>
            <%:Html.TextBoxFor(model => model.EPosta) %>
        </td>
    </tr>
    <tr>
        <td>
            Mesaj
        </td>
        <td>
            <%:Html.TextBoxFor(model => model.Mesaj) %>
        </td>
    </tr>
</table>
<% } %>

Dikkat ederseniz, User Control’ümüz kaynak kodlarında da, kaynak kod sayfamızın üst satırında belirtildiği gibi,”Inherits” özelliğinde belirtilen “Iletisim” modeli kullanılmaktadır.Bu modeli, ana sayfamız olan(yani User Controlün kullanıldığı sayfadan bahsediyorum), User Control’ümüze kendimiz göndereceğiz.Bu işlemi yapmayıda “RenderPartial” metodu sağlıyor.

Şimdi “Index.aspx” sayfasında “RenderPartial” metoduyla bu User Control’ü çekelim.

---Index.aspx---
<% Html.RenderPartial("IletisimForm", Model); %>

Yukarıda gördüğünüz gibi, “IletisimForm” adındaki User Control’ü RenderPartial metoduyla çalıştırıyoruz ve User Control’de “Inherits” özelliğinde belirtilen “Iletisim” modelini 2. parametreyle gönderiyoruz.

Eğer sizlerde güzel görsel bir proje üzerinde bu yöntemi deneyip, projeyi çalıştırırsanız MVC’de User Control kullanımını başarmış olacaksınız.Faydalanmanız dileğiyle..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. MEHMET dedi ki:

    .net deki user control mantığıyla mvc deki mantığın performans farkı var mıdır ?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir