Asp.NET MVC – Ajax İşlemleri
Ajax.BeginForm
Bu metodun Ajax.ActionLink metodundan tek farkı, bir form oluşturmakta ve form içinde bulunan nesnelerdeki verileri Client tabanlı(Ajax ile) Post edebilmektedir.Tabi tetiklenme işlemini bir buton ile gerçekleştirmemiz gerekmektedir.
Ajax.BeginForm metodunun parametreleri Ajax.ActionLink metodunun parametreleriyle benzerlik göstermektedir.
Prototipi aşağıdaki gibidir.
@using (Ajax.BeginForm("string actionName","AjaxOptions ajaxOptions"))
{
}
Burada “actionName” parametresiyle formun tetiklenmesi anında hangi metodunun çalıştırılacağını belirtiyoruz.”ajaxOptions” parametresiyle ise gerekli Ajax ayalarını AjaxOptions nesnesiyle ayarlayabiliyoruz.
Örnek bir kullanım için aşağıdaki kod bloğunu inceleyiniz.
Not : “Home(Controller).cs” isimli Controller sınıfında çalıştığımızı varsayıyorum.
@using (Ajax.BeginForm("Isim", new AjaxOptions() { UpdateTargetId = "IDIsim", HttpMethod = "Post" }))
{
@Html.TextBox("txtIsim", "Adınızı giriniz...")
<input type="submit" value="Göster" />
<div id="IDIsim">TextBox'a yazdığınız isim burada gözükecektir.</div>
}
Yukarıdaki kod bloğunu incelerseniz eğer Ajax.BeginForm metodu ile bir form oluşturuluyor ve bu formun tetiklenmesi durumunda “Isim” isimli bir metodun çalıştırılacağı bildiriliyor.
Şimdi ise Controller sayfamızdaki “Isim” adlı metodumuzu inceleyelim.
public string Isim(string txtIsim)
{
return txtIsim;
}
Projemizi bu şekilde derleyip çalıştırdığımız zaman karşımıza aşağıdaki gibi bir ekran görüntüsü gelmektedir.
![]()
Adımızı yazıp butona tıkladığımız zaman Client tabanlı işlem sonucunda aşağıdaki ekran görüntüsü gelmektedir.

Burada önemli bir hususa değinmek istiyorum.
Bu örneğimizde butona tıkladığımız anda Asp.NET WebForms mimarisinde ki gibi bir POST işlemi gerçekleştirilmiştir.Lakin bu işlem neticesinde TextBox’ımız da ki değer silinmemiştir.Ajax ile Client tabanlı bir işlem gerçekleştirildiğinden dolayı sayfa yeniden yüklenmemekte ve bu sebepten dolayı TextBox’da ki değer kalmıştır.Bu durumu ViewState durumuyla karıştırmamak gerekir.
Bu yazımızında sonuna gelmiş olduk.
Bir sonraki yazımda görüşmek üzere..
İyi çalışmalar..

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