Custom Data Annotation Hazırlamak

Merhaba arkadaşlar, bugün sizlere kısaca Data Annotation dan bahsedip, custom bir data annotation örneği yapacağım.

Öncelikle Data Annotationlar, modelleri valide etmemize yarayan kuralları belirlediğimiz yapılardır. Yani biraz türkçeleştirmeye çalışırsam modelin belirlenen kurallara uyup uymadığını kontrol etmek, bu kuralları model de belirtmek için kullanırız. Bu arada model validasyonu ile alakalı daha önceden yazdığım fluent validation yazıma buradan ulaşabilirsiniz.

Basitçe, hali hazırda kullanılan System.ComponentModel.DataAnnotations altından gelen data annotationlara bir bakalım. Bu arada aşağıdakiler haricinde kullanılan farklı data annotationlar da bulunmaktadır. Ben belirli başlı olanları yazdım. Bununla beraber Entity Framework gibi kütüphaneler ile gelen farklı data annotationlarda vardır.
Required : Zorunlu alanlar için kullanılır.
DataType : Alanın veri tipini belirtmek için kullanılır. (Date,Time,Currency,EmailAdress,Password vb.)
DisplayFormat : Sayfada gösterilecek format bilgisi için kullanılır. (Tarih, Saat, Para vb.)
StringLength : Girilecek stringin uzunluğu için kullanılır.
Range : Sayısal aralık belirtmek için kullanılır.
Compare : İki alanı karşılaştırmak için kullanılır. (Password – RePassword gibi.)
RegularExpression : Regex ile kural kalıpları belirlemek için kullanılır.
jean-philippe-delberghe-unsplash-pattern
jean-philippe-delberghe-unsplash-pattern
Peki bu alanların yada farklı librarylerden gelen data annotationların bizim ihtiyacımızı karşılamadığı durumlarda ne yapabiliriz?
O zaman arkadaşlar ValidationAttribute sınıfından kalıtım alarak kendi data annotationımızı yazabiliriz.
Örneğin modelimizdeki string alan içerisinde “Enes” geçiyor mu diye bakan bir custom data annotation yazalım. Hatta biz parametrik olarak attribute yazalım Enes kelimesi kullanılan yerde belirtilsin.
Bu arada normalde bu senaryo Regular Expression kullanılarak yapılabilir, ben sadece örnek basit ve anlaşılır olsun diye böyle bir senaryo ürettim.
Örneğimize başlayalım.
Web-mvc proje temlpate kullanarak bir solution oluşturdum. Ve Person sınıfını ekledim.

Şimdi bu modelde kullanmak için custom data annotationımı yazacağım. ValidationAttribute sınıfından kalıtım alarak sınıfımı oluşturacağım ve IsValid metodunu override ederek validasyonumu gerçekleştireceğim.

Şimdi bunu Person sınıfımda kullanıyorum.

Sınıfım ve data annotationlarım hazır. Artık ekleme, güncelleme gibi operasyonlarda, istediğim yerlerde girilen değerlerin geçerli olup olmadığını ModelState ile kontrol edebilirim.


Validation Error Message
Validation Error Message

Umarım faydalı olmuştur, kalın sağlıcakla…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir