MVC Custom Validation

Mvc Custom Validation DataAnnotations

0 2,695

MVC Custom validation

MVC Custom validation konusuna geçmeden MVC Model Validation adlı  makaleyi okumanızı tavsiye ederim.  MVC Custom Validation konusunun temel bilgisini oluşturmaktadır. Önceki yazıda bahsettiğim gibi DataAnnotations sınıfı validation işlemleri için oluşturulmuş bir yapı. İçerisinde fazlaca kontrol bulundursa da yazılım hayatında özellikle müşteri isteklerinin getirdiği iş kurallarını tatmin edemez. Bu tarz senaryoların çözümünde tutarlılığı bozmamak adına .Net yapılarından ayrılmamayı tercih etmeliyiz.  Önceki makalemizde Server-Side validation ‘ ın öneminden zaten bahsetmiştik. Şimdi Validation’larımızı özelleştirip bir üst seviyede ele alalım. Custom Validation işlemlerini yönetebilmek için namespace hiyerarşisine göz atalım.

Custom Validation oluşturmak için faydalanacağımız sınıfın adı ValidationAttribute sınıfıdır. ValidationAttribute sınıfı ise Attribute sınıfından türemiştir. Bu sınıflarının metadatalarını incelediğimizde abstract yapılar olduğunu görüyoruz. Abstract sınıflar miras bırakabilen sınıflardı. ( Abstract sınıflar hakkında detaylı bilgi için daha önce yazdığım Abstract nedir? adlı makaleyi inceleyebilirsiniz. )

Örneğimizde Title değişkeni için özel bir Validasyon tasarlayıp model üzerinden entegre edeceğiz.

Model

 

View

 

View kodlarımızı yazdık. Kullanıcı arayüzü (User Interface) hazır. Şimdi Validation için kullanacağımız sınıfı oluşturalım. Oluşturduğumuz sınıf ValidationAttribute sınıfından türeyecek.Bu sayede türediği sınıfın tüm özelliklerini miras alıp özelleştirme imkanımız olacak.

Projemize BilisimIOTitleAttribute adında bir sınıf ekleyip validation kodlarımızı yazıyoruz.

Kodlarımızı incelediğimizde 3 adet değişkenimiz olduğunu görüyoruz. Bu değişkenlerle Validation için kullanacağımız koşul (condition) yapımızı oluşturacağız. Minimum maxsimum uzunluk ve Başlangıç değerinin belirlenmesini isteyeceğiz.Model üzerinde bu değişkenlere değer ataması yapmazsak default değerleriyle işleme girecektir. Constructor ile bu değerlerini belirliyoruz.  Constructor (yapılandırıcı) görevi nesneyi ilk kullanıma hazırlamaktır. C# da oluşturulan her sınıfın yapılandırıcı metodu vardır.

DataAnnotations IsValid

Kodlamada kullandığımız diğer bir metot ise IsValid metodu. Metot tanımlamasında override anahtar kelimesini kullandır. Bu şekilde miras aldığımız metot üzerine kendi validation kodumuzu yazdık. Hangi koşullarda Valid olup olmayacağını belirledik ve o anki durumuna göre hata mesajını yazdık.

Custom Validation Attribute hazır oluduğuna göre modelimize aşağıdaki kodu ekleyebiliriz. BilisimIOTitle attribute’unu ekliyoruz.

 

Controller

ModelState.IsValid ContactModel üzerindeki validation attribute’larına göre kullanıcıdan aldığımız değerlerin doğruluğunu kontrol edecek.

MvcCustomValidation

Başlık değerimizin model üzerinde belirttiğimiz kurala uyumlu olmadığı için BilisimIOTitle StartsWith kuralına takıldığını görüyoruz.

H.Burak Karadağ

Email adresiniz yayınlanmayacaktır.