asp.net core basit crud uygulaması - veri güncelleme - updateproduct /// 8

  • Veri tabanına ve doğal olarak da ekrana getirilecek verilerde, varolan bir verinin güncellenmesi için yeni bir Action tanımı yapılacaktır.
  • Update, Edit veya bu kelimelerin sonuna gelen ek kelimelerle isimlendirilebilir.
  • Bu örnek üzerindeki isimlendirme UpdateProduct şeklinde olacaktır.
  • UpdateProduct Action'undan iki tane oluşturulacaktır. 
    • Bir tanesi ilgili View sayfasını oluşturmayı sağlayan Action.
    • Diğeri de ilgili View sayfasındaki formun veri tabanına istek göndermesini sağlayan Action.
  • Bu iki Action'u ayırmak için HttpGet ve HttpPost Attribute'ları kullanılacaktır.
    • HttpGet Attribute default olduğu için, Post yapacak Action'a HttpPost Attribute eklenmesi yeterli olacaktır.
  • İlk olarak, "UpdateProduct" işlevi çağrıldığında, veritabanındaki belirli bir ürünün id'sine göre aranır ve eşleşen ürün "product" değişkenine atanır.
  • Daha sonra, View'de gösterilir. 
  • Kullanıcı tarafından güncellenen verileri gönderildiğinde, HTTP POST isteği yapılır ve "UpdateProduct" Action tekrar çağrılır. 
  • Bu sefer, veritabanındaki ürünün id'sine göre asenkron olarak aranır ve "targetProduct" değişkenine atanır. 
  • İlgili değişkenlerin değerleri gönderilen formdaki verilerle güncellenir. 
  • Son olarak, veritabanındaki değişiklikler kaydedilir ve kullanıcıya güncellenmiş ürün listesini göstermek için "Index" sayfasına yönlendirilir.
  • İlk olarak Get yapacak Action tanımlanacak.
    • public IActionResult UpdateProduct(int id);
      • "int" tipinde bir "id" parametresi alır.
      • Yönlendirmede Product/UpdateProduct/id yapısı oluşur. 
      • Yani güncellenecek verinini id numarasına göre URL şekillenir.
    • var product = _context.Products.Find(id);
      • Veritabanındaki belirli bir ürünü almak için "ProductDbContext" nesnesinin "Products" özelliğini kullanır. "Find" metodu, veritabanındaki belirli bir ürünü, "id" parametresine göre arar ve bu ürünü, "product" değişkenine atar.
    • return View(product);
      • "product" değişkeninin değerini görünümde kullanmak için iletişim kurar. 
      • Bu metod veritabanından elde edilen ürünü göstermek için bir görünüm oluşturur.

  • Ardından Post yapacak CreateProduct Action'u tanımlanacak;

    • [HttpPost] public async Task<IActionResult> UpdateProduct(int id, Product product);

      • HTTP POST isteği ile çağrılacak olan bir Action tanımlar. 
      • Bu Action , bir "int" tipinde "id" ve "Product" tipinde "product" parametreleri alır ve "async" anahtar kelimesi ile, asenkron bir işlem gerçekleştireceği belirtilir.
    • var targetProduct = await _context.Products.FindAsync(id);
      • Veritabanındaki belirli bir ürünü almak için "ProductDbContext" nesnesinin "Products" özelliğini kullanır.
      •  "FindAsync" metodu, veritabanındaki belirli bir ürünü, "id" parametresine göre arar ve bu ürünü, "targetProduct" değişkenine asenkron olarak atar.
    • targetProduct.ProductName = product.ProductName;
    •  targetProduct.ProductQuantity = product.ProductQuantity; 
    • targetProduct.ProductPrice = product.ProductPrice;"
      • Veritabanındaki ürünü güncellemek için kullanılır. 
      • Değişkenlerin değerleri gönderilen formdaki verilerle güncellenir.
    • await _context.SaveChangesAsync();
      • Veritabanındaki değişiklikleri kaydetmek için kullanılır. 
      • "SaveChangesAsync" metodu, veritabanındaki değişiklikleri kaydeder ve işlem bittiğinde bir "Task" nesnesi döndürür.
      •  "await" anahtar kelimesi, asenkron bir işlemi beklemek için kullanılır.
    • return RedirectToAction("Index");
      •  "RedirectToAction" metodu, başka bir işlevi çağırmak için kullanılır. 
      • Bu metod "Index" işlevini çağırır ve kullanıcıya güncellenmiş ürün listesini göstermek için "Index" sayfasına yönlendirir.

  • Finalde yazılacak iki Action şu şekilde olur;

Yorumlar