Ajax ve/veya web-socket istiyorsun kısaca.
Google'da bu iki anahtar kelimeyi aratırsan detaylı öğrenebilirsin. Ama ben dayanamıyorum ve örnek yazıyorum
Dependency olarak: jQuery (
vanilla da yapılabilir ancak başlangıç için
jquery daha kolay gelecektir)
back-end olarak: c# .net-kütüphanesi
ORM olarak: entity-framework Application : c#.Net MVC DataContext objesi : HumanResources Ele Alınan Obje : Customer public class Customer
{
internal Guid Id {get; private set;}
public string Name {get;set;}
public string CustomertNumber {get;set;}
public string Email{get;set;}
}Controller:
CustomerController Controller KODU public class CustomerController:Controller
{
HumanResources _context;
public CustomerController(DbContext context)
{
// dependency injection'ı araştır
_context=(context as HumanResources);
}
[HttpPost]
public JsonResult Register(
[Bind(Include="name")] CustomerViewModel vm) // context ile asıl app ayrılmalıdır. Bu sadece örnektir. Best practice asla değildir.
_context.Customers.Add(new Customer(){Name=vm.Name,Email=vm.Email}); // burada type adapter araştır. Örnek olarak AutoMapper.
_context.SaveChanges(); // Ayrıca DTO nedir, Application-layer, Data-Access Layer nedir araştır. Şu an kodladığımız katman UI yani, arayüz uygulaması olmalıydı.
return Json(new {success=true,callback:"Account/Verify"}); //Json olarak döndük ama anonymous type olarak. Bunu concrete bir hale getirmekte fayda var.
}HTML Kodu <form id="regForm">
<input name="name" id="name">
<input name="email" id="email">
<button type="submit" > Register</button>
</form> JS Codu $(function(){
$("#regForm button[type='submit']").on('click',function(event){
event.preventDefault(); // formun submit olup servere çağrı yapmasını engellemek gerek.
$.ajax({
url:'@Url.Action("Register","Customer")',
content:'application/json',
method:'POST',
beforeSend:function(){
//todo : yükleniyor modalını göster
},
success:function(response){
//cevap geldi. eğer success ise, bununla ilgili devam edecek işlemleri yap
if(response.success){
//success durumu
return;
}
// server-side arıza
},
error:function(x,h,r){
// request 200 dönmedi...
alert(r);
},
complete:function(){}
// todo : loading modalını kapat
});
});
});