MVC Validation (MVC Doğrulama)

Eyl 06, 2013

Asp.Net ile geliştirilen uygulamalarda kullanıcı girişi olduğu durumlarda bu verilerin doğru girilip girilmediği uygulama tarafından kontrol edilmelidir. Veri tabanında sayı değeri girileceği zaman kullanıcı harf tipinde değer girdiğinde veri tabanına kayıt olamayacağından hata alınır. Bu verileri daha veri tabanına göndermeden hatta sunucu ile bağlantı kurmadan kontrol etmek için MVC Validation işlemleri kullanılır. MVC Validation uygulamaları veri tabanı bağlantısı kurulduğu zaman yazılımcı tarafından ekstra bir kontrol istenmiyorsa eğer veri tabanındaki bilgilere göre gerekli kontrolleri kendisi eklemektedir. Yani eğer tabloda int tipinde veri gerektiren bir sütun varsa otomatik olarak o sütuna "int" tipinde veri gelecek şekilde kontroller oluşturulur. Eğer ekstradan bir kontrol eklenmek isteniyorsa ayrıca programcı kendisi de ekleyebilmektedir. Mesela TC kimlik numarası istenen durumda "int" tipinde değer alınıyorsa MVC Validation bunu sadece "int" tipinde veri gelmesi gerektiği konusunda kontrol eklemektedir. Fakat TC kimlik numarası 11 hane olduğundan programcının fazladan kontrol eklemesi gerekmektedir. Bunu da programa birkaç kod ekleyerek yapması mümkündür.

Uygulama

  1. Proje ilk oluşturulduğunda çıktı aşağıdaki şekilde olur.

     

    "id" alanında hata vermemesinin sebebi veri tabanında otomatik olarak değer atanmasından dolayıdır. Burada "ad" ve "soyad" alanları veri tabanında "null"değer atamasına izin verilmediği için hata mesajı vermektedir. "dogumTarihi" ve "telNo" alanlarına ad hatalı veri girildiği için hata vermektedir. "dogumTarihi" alanı veri girilmediğinde hata vermemektedir. "telNo" alanı boş değerde hata vermektedir.

  2. Fazladan kontrol eklemek için 2 ayrı yöntem kullanılabilir.

    • Bunlardan ilki .edmx dosyasına ekleme yapmak. Dosyaya “System.ComponentModel.DataAnnotations” isim uzayı eklendikten sonra istenen kontroller yazılır. Uygulamada “telNo” alanına 7 basamak girilmesi istenmektedir. Bunun için aşağıdaki kırmızı çizgiyle gösterilen kod eklenir.



    • Başka bir yöntem ise ayrı bir .cs dosyası eklemek. Bu dosyanın içindeki kodlar aşağıdaki gibi olur.

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.ComponentModel.DataAnnotations;
      namespace MVCValidation
      {
          [MetadataType(typeof(KisiEntities))]
          public partial class Kisi
          {
              internal class KisiEntities
              {
                  [Required]
                  [StringLength(15, ErrorMessage = "The ad field must be under 15 characters")]
                  public string ad { get; set; }

                  [Required]
                  [StringLength(15, ErrorMessage = "The soyad field must be under 15 characters")]
                  public string soyad { get; set; }

                  [Range(1000000, 9999999, ErrorMessage = "telNo must be 7 characters")]
                  public int telNo { get; set; }
              }
          }
      }

Uygulama çalıştırıldığında ekran görüntüsü aşağıdaki gibi olur.