asp.net core basit crud uygulaması - validasyon /// 16

  • Şimdi yapılacak işlem validasyonların tanımlanması;
    • Yani kullanıcının inputlara yazdığı verilerin uygunluk türüne göre Post edilmesi işlemi.
      • Ürün ismi girilmesi zorunlu kılınacak.
      • Ürün Stoğu ve Ürün Fiyatı seçenekleri zorunlu olmayacak ancak negatif bir sayı türünde olmayacak.
  • Bu validasyonları uygulamak için, FluentValidation kütüphanesi kullanılacak.
  • FluentValidation kütüphanesini projeye yüklemek için;
    • Visual Studio'daki, Solution Explorer'da projeye sağ tık yapılır.
    • Manage NuGet Package seçilir.
    • Browse kısmına gidilerek
    • FluentValidation.AspNetCore aratılır ve içine tıklanır.
    • Install edilir.
  • İlk olarak Program.cs içerisine aşağıdaki servisler, Servicelerin bulunduğu alana eklenecektir.


  • Ardından ModelState kullanımı gerekmektedir. 
  • Validasyon uygulanacak formlar, ürün oluşturma ve ürün güncelleme sayfaları olduğu için;
  • Bu özellikleri sağlayan Action'lar ProducController üzerinden aşağıdaki gibi revize edilmelidir.
    • Bir if döngüsü oluşturulur.
    • ModelState.IsValid metodu kullanılarak gönderilen formun geçerli olup olmadığı kontrol edilir.
    • ModelState, bir formun gönderilmesiyle birlikte gönderilen verinin geçerli olup olmadığını kontrol etmek için kullanılan bir nesnedir.
    • Eğer form geçerli değilse, ModelState.IsValid geriye false değer döndürür.
    • Eğer ModelState.IsValid geriye false döndürürse, var messages değişkeni oluşur ve ModelState.ToList() metodu ile ModelState'deki hata mesajları liste halinde alınır.
    • View metodu ile product nesnesi gönderilir ve hata mesajları görüntülenir.

  • CreateProduct Action'u (Post)

  • UpdateProduct Action'u (Post)

  • Validasyonları tanımlamak için, Models klasörü içerisine Validations isimli bir klasör oluşturulur.
  • Bu klasör içerisine de modele uygun bir isimlendirme yapılarak bir class oluşturulur. (ProductValidator.cs)
  • Bu sınıf, FluentValidation kütüphanesi kullanarak Product sınıfı için geçerlilik kontrolü yapmak için kullanılan bir sınıfı tanımlar.
  • ProductValidator sınıfı, AbstractValidator<Product> sınıfından türetilir.
    • Bu, Product sınıfı için geçerlilik kontrolü yapacağını belirtir.
  • ProductValidator sınıfının constructor metodunda, RuleFor metodu ile sınıfın üyeleri için geçerlilik kontrolleri tanımlanır.
    • İlk RuleFor metodu, ProductName üyesi için geçerlilik kontrollerini tanımlar. 
      • NotEmpty().WithMessage("Lütfen bir ürün ismi giriniz") metodu ile ProductName üyesinin boş olmaması gerektiği belirtilir ve boş ise kullanıcıya "Lütfen bir ürün ismi giriniz" mesajı gösterilir.
      • NotNull().WithMessage("Lütfen bir ürün ismi giriniz.") metodu ile ProductName üyesinin null olmaması gerektiği belirtilir ve null ise kullanıcıya "Lütfen bir ürün ismi giriniz." mesajı gösterilir.
    • İkinci RuleFor metodu, ProductQuantity üyesi için geçerlilik kontrollerini tanımlar.
      • GreaterThanOrEqualTo(0).WithMessage("Lütfen 0'dan büyük bir sayı giriniz.") metodu ile ProductQuantity üyesinin 0 veya 0'dan büyük olması gerektiği belirtilir ve 0'dan küçük ise kullanıcıya "Lütfen 0'dan büyük bir sayı giriniz." mesajı gösterilir.
    • Üçüncü RuleFor metodu, ProductPrice üyesi için geçerlilik kontrollerini tanımlar.
      • GreaterThanOrEqualTo(0).WithMessage("Lütfen 0'dan büyük bir sayı giriniz.") metodu ile ProductPrice üyesinin 0 veya 0'dan büyük olması gerektiği belirtilir ve 0'dan küçük ise kullanıcıya "Lütfen 0'dan büyük bir sayı giriniz." mesajı gösterilir.
  • Bu sınıf, Product sınıfı için geçerlilik kontrollerini tanımlar ve kullanıcıya hata mesajları gösterir.
    • Örneğin, ProductName üyesi boş veya null ise, "Lütfen bir ürün ismi giriniz" mesajı gösterilir. 
    • Aynı şekilde, ProductQuantity ve ProductPrice üyeleri için de 0'dan küçük değer girilirse "Lütfen 0'dan büyük bir sayı giriniz." mesajı gösterilir. 
  • Bu sayede formda yapılan hatalar tespit edilir ve kullanıcıya hata mesajları ile bildirilir.


Yorumlar