Merhabalar,
Bugünkü notumuzu, normalde view de html.beginform ile controller a yaptığımız isteklerde sayfanın post olmasını istemeden verileri ekrana getirmek için alıyormuşuz 🙂
Veritabanından veriyi almanın çokça senaryosu var,bu da onlardan bir tanesi.
Senaryo şu; Model olarak kullandığımız bir sınıfa ait veriyi controller a gönderip gelen veriye göre veritabanında aramamızı yapıp,oluşan koleksiyonu partialview e göndereceğiz.
İlk olarak projemize manage nuget manager dan Microsoft Jquery Unobtrusive Ajax ı yüklüyoruz.
Sonrada form u göndereceğimiz partialview de ekranı tasarlıyoruz ;
@using(@Ajax.BeginForm(“GetListMaterial”, “Trace”, new AjaxOptions { UpdateTargetId = “showListMaterial“, InsertionMode = InsertionMode.Replace }))
Görseldeki kırmızı renkli alanda form un controller a gönderilmesi işlemini ajax ile yapacağımızı belirtiyoruz ve form un ilk parametresi olarak action metodun ismini 2.parametresi olarak controller ın ismini veriyoruz daha sonra da AjaxOptions sınıfı ile controller dan dönecek olan partialview ün hangi id altına append edileceğini UpdateTargetId ile belirtiyoruz. InsertionMode property si ile de dönen yanıtın nasıl ekleneceğine karar veriyoruz. İsterseniz HttpMethod özelliği ile işlemin get mi post mu olduğuna dair bilgiyi de yazabilirsiniz. Şimdilik bize bu kadarı yeter.
Daha sonra yazdığımız 2 combobox var,üstteki tetiklendiğinde bir jquery methodu çağırıyor ve alttaki combobox ı dolduruyor. Üstteki combobox ise sayfa yüklendiğinde veritabanından çektiği verinin viewdata ile gönderilmesi sonucu doluyor.
Ve son olarakta tabiki bir buton 🙂
Butona tıkladığında beginform satırında belirttiğimiz adrese model imize ait datayı gönderiyoruz ;
Controller da veritabanında sorgulamamızı yapıp koleksiyonu partialview e gönderiyoruz.
Partial view de de @model ile koleksiyonu aldıktan sonra veriyi html kodları içerisine alıyoruz.
Sayfa git-gel yapmadan veriyi almış bulunuyoruz.
İyi çalışmalar herkese….