Ana içeriğe atla
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.
- FluentValidation.AspNetCore aratılır ve içine tıklanır.
- İ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
Yorum Gönder