Asp.NET Core 5.0 - Kullanıcıdan Gelen Verilerin Doğrulanması Validations (Gençay Yıldız anlatımından resmedilmiştir)

 

Asp.NET Core 5.0 - Kullanıcıdan Gelen Verilerin Doğrulanması Validations

Form üzerinde 3 alanımız var. 

Bu alanlardan gelen verileri kontrol etmek için if, switch gibi yapıları kullanmamız, ilerleyen zamanda kodların çöp haline gelmesine neden olur. 




Bunun yerine ilgili nesnemizin özelliklerinde kurallar tanımlıyoruz. Bu kurallara data annotations deniliyor. Böylece ifler yazmak yerine ModelState özelliğini kullanıyoruz. Bu kontrolleri MVC yapmış oluyor!

Sarı renkle işaretlendiğimiz alanlarda görüldüğü gibi, view tarafına span tagi içine "asp-validation-for" ile yakalanan hataların otomatik olarak formda gösterilmesini sağlayıyoruz. 




Server tarafında ModelState ile yakalanan hataları tek tek göstermek yerine, toplu şekilde bir div içinde de gösterebiliyoruz.(kırmızı renkle belirttiğimiz alandaki gibi)



ModelMetaDataTypes kullanımı ile Validations



Buradaki durum TEK SORUMLULUK PRENSİBİ ne aykırıdır. Diğer bir değişle, SOLID prensiplerinden Single Responsibility prensibine aykırıdır. Çünkü bu sınıf bir model mıdır yoksa validation durumlarını içeren bir sınıf mıdır. 

Tanımlayamayız anlamına gelmiyor. İsteyen tanımlar tabi. Ama Prensip olarak tanımlamamak doğru olan.

Validasyonlar için Models klasörü altında ModelMetaDataTypes isimli klasör oluşturduk. Hangi sınıfımız için validasyon oluşturacaksak onun adı ile başlayacak şekilde isimlendirmemizi yapıyoruz. Burada ProductMetadata.cs verdik.


Product sınıfının validasyonlarını bu sınıftan alacağını bildirmiş olduk.

FluentValidation kütüphanesi 


FluentValidation kütüphanesi MVC deki ModelState ile ortak çalışıyor. Onunla entegre edildiği için tercih ettik.

Bu ayar sayesinde, startup ın dahil olduğu projedeki AbstructVAlidationlardan türeyen bütün sınıfları otomatik olarak bulacak ve kullanacak.

Modul altında Validators klasörü oluşturarak altına ProductValidator.cs oluşturduk. Ve bu sınıfı AbstructVAlidation olarak belirledik.


Server’da ki Validation’ları Dinamik Olarak Client Tabanlı Uygulamak


Server da tanımlanan Validasyonları client tarafında kullanabilmek için 3 tane jquery kütüphanesi kullacağız.

 Client-Side Library sekmesi sayesinde UI tabanlı bütün kütüphaneleri projemize ekleyebiliriz.

Harici kütüphaneleri yüklemek için wwwroot isimli klasör açıyoruz. Kütüphaneleri Buraya yüklüyoruz.

jquery
jquery.validate
jquery.validate.unobtrusive (microsoft tarafından oluşturulan kütüphanedir)
kütüphanelerini yükledik.

Yüklediğimiz 3 kütüphaneyi hangi sayfada kullanacaksak oraya dahil ediyoruz.

Bu kütüphaneler sayesinde, server yükünü almış oluyor, kontrolleri clint tarafında yapmış oluyoruz. Aynı zamanda tek bir yerden validation yönetimini sağlamış oluyoruz.



Yorumlar

Bu blogdaki popüler yayınlar

ÇÖZÜLDÜ: mapper, System.BadImageFormatException: 'Could not load file or assembly 'DataAccess....Geçersiz biçimdeki bir program yüklenmek istendi

Asp.NET Core 5.0 - Temel Kavramlar(User-Client-Hosting-IP-Domain-Request-Response-Layout-RenderBody-RenderSection ) (Gençay Yıldız anlatımı)