Bu yazımda MVC ile kullanıcı kontrollerini (user control) hem MVC'nin kendi metodu ile hem de Ajax ile kullanmayı göstermeye çalışacağım. MVC ile
Html sınıfının altında gelen
RenderPartial metodu ile user controlleri çalıştırıp ekrana çıktısını getirebiliyoruz. Bu şekilde sayfalarımızdaki bölümleri user control ile oluşturabilir ve esneklik sağlayabiliriz. Ancak MVC'de bu şekilde bir kullanım için kullanacağımız user controlün
System.Web.Mvc.ViewUserControl sınıfından türemesi gerekli. Bu kullanım dışında en kullanışlı yöntemlerden biri de User controlleri Ajax ile beraber kullanmak. Bu şekilde de herhangi bir user controlü
Server.Execute metodu ile çalıştırıp, çıktısını string olarak elde edeceğiz. Bunun sonucunda da Ajax ile etkileşimli oldukça güzel birçok uygulama geliştirebiliriz. Şimdi bu kullanımlara göz atalım.
Öncelikle ilk kullanım olan ve MVC ile hazır olarak gelen
Html sınıfı altındaki
RenderPartial metodu ile kullanıma bakalım. Bu şekilde bir kullanım için html bölümde şu şekilde bir kullanım yapmalıyız.
<% Html.RenderPartial("~/Views/Home/usercontrol.ascx"); %>
Görüldüğü gibi metodumuz parametre olarak kontrolün adresini ile adını beraber almakta. Çalıştıktan sonra ise user controlün çıktısını string olarak ekrana yazdırmakta. Burada kullanacağımız user control
System.Web.Mvc.ViewUserControl sınıfından türemeli. Bu şekilde sayfalarımızdaki bölümleri user controller ile rahatlıkla oluşturabiliriz.
Bu kullanım dışında çok kullanışlı bir yöntem ise user controlleri Ajax işlemlerinde kullanmak. Bu şekilde çok efektif, dinamik uygulamalar geliştirebiliriz. Bu yöntemde user control
System.Web.Mvc.ViewUserControl sınıfından türeyebileceği gibi
System.Web.UI.UserControl sınıfından da türeyebilir. Oluşturduğumuz kontrolü Ajax isteğinde bulunacağımız Controller metodunda Server.Execute metodu ile çalıştırıp çıktısını string olarak elde edeceğiz ve bu değeri Ajax isteğinin sonucu olarak (
Json türünde) döndereceğiz. Örnek script ve controllerdaki metot kodları şu şekilde olmalı.
// Ajax ile usercontrol'ü çağıracağımız sayfada yazacağımız script kodlar.
<script>
$(function(){
user_control_getir();
});
function user_control_getir() {
$.ajax({
type: "post",
url: "<%= Url.Action("user_control_oku", "Home") %>",
data: "{}",
dataType: "json",
success: function(msg) {
$("#sonuc").html(msg);
},
error: function(msg) {
$("#sonuc").html("Hata Oluştu.");
}
});
}
</script>
// Ajax ile istekte bulunacağımız UserControlü çalıştırarak
//string olarak getiren Controller metodumuz.
public ActionResult user_control_oku()
{
Page page = new Page();
UserControl ctl = (UserControl)page.LoadControl("~/Views/Home/usercontrol.ascx");
page.Controls.Add(ctl);
StringWriter writer = new StringWriter();
HttpContext.Server.Execute(page, writer, false);
string sonuc = writer.ToString();
return Json(sonuc);
}
Ajax ile user control kullanarak çok kullanışlı uygulamalar geliştirebiliriz. Bu konuda düşündüğüm uygulamaları fırsat buldukça hayata geçirmeye çalışacağım. Ayrıca MVC bloğum için hazırladığım
Ajax Uygulamalarım (demo olarak görebilirsiniz) bölümünü tamamen bu yöntem ile geliştirdim.
Ajax işlemlerinde user controle parametreler göndererek çok daha farklı, etkileşimli uygulamalar geliştirelebilir. Ayrıca yazmış olduğumuz user control'ü çalıştıran kodları bir metot olarak hazırlayıp bu metoda usercontrol adını parametre ile göndererek kullanmak daha kolay ve esnek olacaktır.
Daha önce Asp.net ve Ajax ile kullanıcı kontrollerini kullanmak için yazmış olduğum
yazı da buradaki Ajax kullanımı ile aynı. Tek fark user controlü çalıştıracak olanın webmethod değil de Controller'daki metot olması. MVC ile ve Ajax işlemleri ile ilgilenen herkese çok kolaylık sağlayacağını düşünüyorum. Örnek verecek olursak bana çok kolaylıklar sağlıyor.
Umarım ilgilenenlere faydalı olur.
İyi çalışmalar.