Ana içeriğe atla
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.
- "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
Yorum Gönder