ASP.NET Core Kitap Listeleme Projesi Ders 06

Kitap Oluşturma İşleminde Validasyon Kontrolü Kullanımı

Bu dersimizde yeni kitap oluşturma sayfası için validasyon kontrolleri nasıl eklenir buna değinmek istiyorum. Kullanıcı kitap adı, yazar ve ISBN bilgilerini girip yeni bir kitap eklemek için oluştur butonuna basınca verilerim kaydedilecek ve kitaplistesi tekrar yüklenecek.

Dersin Video eğitimini izlemenizi de öneririm:

Biz Kitap modelimizde KitapAd kısmını Required yani zorunlu olarak girilmeli şeklinde tanımlamıştık. Kullanıcı eğer kitap adına herhangi bir veri girmez ise burada bir hata mesajı verdirelim.

Bunu yapabilmek için Olustur.cshtml.cs dosyamıza gelelim ve kodlarımızı düzenleyelim:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using KitapListesiProjesi.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace KitapListesiProjesi.Pages.KitapListesi
{
    public class OlusturModel : PageModel
    {
        private readonly KLDbContext _db;

        public OlusturModel(KLDbContext db)
        {
            _db = db;
        }

        [BindProperty]
        public Kitap Kitap { get; set; }

        public void OnGet()
        {

        }

        public async Task< IActionResult > OnPost()
        {
            'if'(ModelState.IsValid)
            {
                await _db.Kitap.AddAsync(Kitap);
                await _db.SaveChangesAsync();
                return RedirectToPage("Index");
            }

            else
            {
                return Page();
            }
        }
    }
}

Not: if önünde ve sonunda tırkan yok wp hatasını aşabilmek için bu şekilde yazdım. Video eğitimde görebilirsiniz.

Kodlarımızı Açıklayalım:

Bizim burada OnGet handler metodumuz mevcut. Kullanıcı oluştur dediğinde web sayfası üzerinde yer alan veriler post ediliyor. Dolayısı ile benim bir post handler metoda ihtiyacım olması sebebi ile OnPost metodumuzu ekledim. Bu metodum async task türünde bir metot. Ayrıca IActionResult çünkü ben bu işlemin sonucunda bir başka sayfaya yönlendirme yapacağım. Dikkat ederseniz handler önlerinde On mevcut, handler isimleri önünde mutlaka ON kullanılır. 

Yukarıda tanımladığımız Kitap property’i OnPost ile bağlama işlemini gerçekleştirebilmek için BindProperty attribute’unu kullandım. Böylelikle ben OnPost içinde otomatik olarak Kitap property’i kullanabileceğim.

OnPost metodu içinde kodlarımı yazdım.

Burada modelstate’in geçerli olup olmadığının kontrolü ile başlıyorum. Eğer geçerli değil ise herhangi bir işlem yapılmayacak mevcut sayfa yeniden yüklenecek. Eğer model state geçerli ise if içinde yer alan kodlarım çalışacak. Böylelikle veritabanıma eklemek istediğim kitap eklenecek.

Tabi aslında if içinde yer alan ilk satır ile hemen veritabanıma kitap eklenmiyor. Yani AddAsync metodu tek başına yeterli değil. Benim bu işlemimde oluşan değişiklikleri veritabanıma yansıtmam için SaveChangesAsync metodunu kullanmam şart. Daha sonra sayfamı index sayfasına yönlendiriyorum ve kitapları listeliyorum. Şimdi projemizi çalıştırıp test edelim. Bir kitap ekliyorum. Eklendiğini görüyorum.

Bir kitap daha eklemeye çalışıyorum ancak bu sefer KitapAd alanını boş bıraktım. Görüleceği üzere herhangi bir işlem gerçekleşmedi ve kitap oluşturma sayfam tekrar yüklendi. Çünkü ben Kitap model classımda KitapAd için property attribute olarak Required tanımlamıştım. Dolayısı ile bu alana veri gelmeyine kayıt işlemi de yapılamıyor.

Gelelim validasyon kontrolüm için geriye mesaj döndürm işlemini yapmaya. Olustur.cshtml dosyama geliyor ve kodlarımı düzenliyorum.

@page
@model KitapListesiProjesi.Pages.KitapListesi.OlusturModel


Yeni Kitap Ekle


Şimdi kitap eklemeyi deneyelim ve hata mesajının çıkmasını örnekleyelim.

Dersi etkili şekilde izlemek için video eğitimi mutlaka izleyiniz.

Bir sonraki derste görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir