Merhabalar , Bu yazımızda Model Validation konusudan bahsedecğim , Model validation aslında mvc de olan bir yapı web api ye özel bir özellik değildir , mvc deki mantık ile aynıdır .

Modellerimiz deki alanlara eklediğimiz Annatation lar ile bu kontrolleri sağlamaktayız . Bu işlemi yapmamızı sağlayan System.ComponentModel.DataAnnotations  sınıfıdır.

using e bu sınıfı eklediğimizde modelimizde annotation ları kullanabiliriz.

Örnek Model:

ASP.NET MVC’deki Bazı Annotation Tipleri ve Açıklamaları : 

Required
Bu özellik, değerin zorunlu olduğunu ve atlanamadığını belirtir.
Syntax:[Required(ErrorMessage=”Please enter name”),MaxLength(30)]

DataType:Bu özellik modelin veri tipini belirlemek için kullanılır.
Syntax:[DataType(DataType.Text)]

Range:Bu özelliği kullanarak iki sayı arasında bir aralık ayarlayabiliriz.
Syntax:[Range(100,500,ErrorMessage=”Lütfen uygun değer giriniz.“)]

Compare:Bu özelliği kullanarak giriş yapılan alan ile farklı bir alanın değerlerinin aynı olup olmadığı kontrol edilir.
Syntax:[Compare(“Password”,ErrorMessage =”Şifre bilginizi kontrol ediniz.”)]

Tırnak içinde yazılan ilk alanda eşleştirilecek alan belirtilen

StringLength:Bu özelliği kullanarak stringin maksimum ve minimum uzunluğunu belirleyebiliriz.
Syntax:[StringLength(30,ErrorMessage=”30 karakterden fazla giremezsiniz!”)]

DisplayName:Bu özelliği kullanarak, görünümde görüntülenecek özellik adını belirtebiliriz.
Syntax:[Display(Name=”Öğrenci Adı”)]

MaxLength:Bu özelliği kullanarak maksimum özellik uzunluğu belirleyebilirsiniz.
Syntax:[MaxLength(3)]

Bind:Bu özellik, model bağlama için dahil edilecek veya hariç tutulacak alanları belirtir..
Syntax:[Bind(Exclude = “StudentID”)]

DisplayFormat:Bu özellik, niteliğe göre belirtilen biçimde tarih belirlememize izin verir.
Syntax:[DisplayFormat(DataFormatString = “{0:dd.MM.yyyy}”)]

RegularExpression:Regex formatı kullanılabilir Örn: Email ID.
Syntax:[RegularExpression(@”^\w+([-+.’]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”, ErrorMessage = “Email is not valid.”)]

 

Validasyon ların 3 Farklı kullanım Şeklimiz var:

  • Model State
  • Validation Model Attribute
  • Validation Model Filter

screenshot_1

  • Model State : ModelState.IsValid kontrolü ile bool bir değer dönmektedir , true ise hatasız false ise model e uygun olmayan değerlerin olduğu belirtilir.

Örnek   :

Hata aldığında hatalı alanları responseta dönecek şekilde örnek bir kod.

  • Validation Model Attribute : Model Statteki gibi her seferinde bu kodu yazmak yerine bunu bir FilterAttribute haline getirip controllerımız tanımlayıp aynı şekilde uygulayabiliriz .

screenshot_2

Ekran görüntüsündeki gibi bir Filters kalsörü oluşturdum içine MyModelValidationAttribute adında bir sınıf ekledim , bu sınıfı bir attribute olarak kullanabilmek için ActionFilterAttribute sınıfından miras aldım.

MyModelValidationAttribute.cs :

Kullanım için Controller Örnek Kod :

  • Validation Model Filter :

Yazmış olduğumuz filter ı WebApiConfig.cs te filter olarak tanımlar isek global bir filter olarak kullanabilir ve Controllerın başına bu attribut ü her seferinde tanımlamak zorunda kalmayız :

WebApiConfig.cs:

config olarak bu filter ı eklediğimizde artık Controller da attribute ü yazmamıza gerek kalmamaktadır.

UserController.cs: 

Genel olarak model validationlar bu şekilde kullanılmaktadır.

Print Friendly, PDF & Email
Bu alana reklam verebilirsiniz!