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

Asp.NET MVC – Ajax İşlemleri

Bu yazımızda Asp.NET MVC mimarisinde Ajax teknolojosini kullanmayı inceleyeceğiz.Önceki yazılarımdan Asp.NET MVC – Ajax başlıklı yazımızda belirttiğimiz gibi gerekli JQuery kütüphaneleri projeye entegre edildikten ve web.config dosyasında ayarlar yapıldıktan sonra Ajax çalışmalarını gerçekleştirebiliriz.

Konuyu fazla uzatmadan direkt AjaxHelper metodlarına sırasıyla değinmek istiyorum.

Ajax.ActionLink
Bu metod sayesinde, bir link oluşturulup, oluşturulan bu link ile bir Ajax metodu tetiklenebilmektedir.Bu metodun temel unsurlarından birisi sayfa yenilenmeden Client tabanlı işlemler gerçekleştirmektir.Tabi ki de tetikleyeceği Ajax metodunu manuel olarak yazmak zorunda değiliz.Bu metod işlevselliği gereği bütün işlemleri kendisi gerçekleştirmektedir.Lakin 12 OverLoad’a sahiptir.Bu sebepten dolayı yerine göre gayet esnek ve kullanışlı bir metoddur.
Örnek olarak aşağıda en çok kullanılan 1. OverLoad’ının prototipini sunuyorum.

@Ajax.ActionLink
(
string linkText,
string actionName,
AjaxOptions ajaxOptions
)

Parametrelerden bahsedersek eğer;

  • linkText : Oluşturacaği linkin adı.
  • actionName : Oluşturduğu link tetiklendiği anda Ajax metodu ile işlemleri gerçekleştireceği Action metodun adı.
  • ajaxOptions : Bu parametre farkındaysanız referans tipli bir değişken tipindedir.Yani içine bir AjaxOptions nesnesi almaktadır.Peki AjaxOptions nesnesi nedir?
    Bu metodumuzun otomatik olarak oluşturacağı Ajax metodunun özelliklerini taşıyan bir nesnedir.AjaxOptions nesnesinin özelliklerini incelersek eğer UpdateTargetId ve HttpMethod özellikleriyle karşılaşacağız.
    UpdateTargetId özelliği, Ajax metodu ile işlemleri gerçekleştireceği Action metottan gelen sonucu, span ya da div gibi HTML nesnelerine yazdırmaktadır.O nesnenin id Attribute’unu vermemiz yeterli olacaktır.
    HttpMethod özelliği ise, “Post” ve “Get” olmak üzere iki değer almaktadır.

Şimdi bu metodumuzla ilgili bir örnek yapalım.Örneğimizin içeriği o anki tarih bilgisini Ajax metodlarıyla Client tabanlı olarak getirttirmek olsun.

Controller katmanımızda “Home(Controller).cs” isminde bir Controller sınıfı oluşturalım ve içine ActionResult tipinden olan “Index” isimli ve string tipten olan “TarihGetir” isimli metodlarımızı oluşturalım ve içeriklerini aşağıdaki gibi ayarlayalım.

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public string TarihGetir()
        {
            return "Tarih : " + DateTime.Now;
        }
    }

“Index” isimli Action metodumuzun View görüntüsünü oluşturup aşağıdaki kodları yazalım.

@Ajax.ActionLink
(
"Tarih Bilgisini Göster",
"TarihGetir",
new AjaxOptions { UpdateTargetId = "alan", HttpMethod = "POST" }
)
<div id="alan">Tarih Bilgisi Belli Değil</div>

Şimdi buraya kadar neler yaptık bir tartalım.View katmanımızda ki “Index.cshtml” sayfasında “Tarih Bilgisini Göster” isminde linkimizi oluşturuyoruz.Bu linkin Ajax kullanarak Client tabanlı bir şekilde “TarihGetir” isimli Action metodu çalıştırmasını söylüyoruz.”TarihGetir” Action metodundan dönen sonuçları ise AjaxOptions nesnemizde belirttiğimiz “alan” id’sine sahip HTML nesnesine yazdırıyoruz.

Eğer bu şekilde projemizi derleyip çalıştırdığımızda aşağıdaki ekran görüntüsü gelmektedir.
AjaxActionLink1
Linke tıklandıktan sonra ekran görüntüsü aşağıdaki gibi olmaktadır.
AjaxActionLink2
Ajax.ActionLink metodunu irdelemeyi burada sonlandırıyorum.Bir sonraki sayfamızda Ajax.BeginForm metodunu inceleyeceğiz.

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. Ayşe Sayarı dedi ki:

    Merhaba, Html.BeginForm üzerinden uygulama geliştiriyordum, satın aldığım ingilizce birkaç kitap hep bu örnek üzerinden gidiyordu. Ajax’ı manuel olarak yazıyordum ve post işlemi gerçekleştiriyordum.
    İnternette çoğu örnek Ajax.BeginForm üzerinden verilmiş. Sanırım AJAX tarafını .NET kendi yapılandırıyor böylece. Bir avantajı var mı, değiştirmeye gerek olur mu muallakta kaldım açıkçası.
    Extra kattığı şeyler var mıdır ?

    Bir de diyelim, aynı formu içeren birden fazla farklı sayfa açtı. Her açılan sayfa için tüm formlar sağlıklı çalışır mı sizce ?
    Teşekkür ederim.

    • Gençay dedi ki:

      Merhaba,

      Asp.NET MVC mimarisinin yapılan yeniliklerini her ne kadar takip ederek bloğumda yayınlasamda her gelen yapıyı kullanmak gibi bir zorunluluk şahsen görmemekteyim. Zaten bu makale 2013 yılında yayınlanmıştır. Benim size tavsiyem Ajax işlemlerini manuel olarak yapmanızdır. Bu şekilde mimarinin yapılandırmasından doğacak olası performans düşüşleri ve servera yüklenen sorumluluk mikronlukta olsa giderilmiş olacaktır.

      İkinci sorunuzu tam anlayamadım. Sanırım demek istediğiniz “aynı formu içeren birden fazla sayfayı biz açsak burada bir sıkıntı söz konusu olur mu?” şeklindedir. Eğer sorunuz bu şekildeyse Hayır olmayacaktır. Sadece hangi sayfadaki formdan talep geldiğini farklı parametrik çalışmalarla ayırt edebilirsiniz.

      Sevgiler.

Gençay için bir yanıt yazın Yanıtı iptal et

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